ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/eg/bench
Revision: 1.1
Committed: Sat Apr 26 02:27:30 2008 UTC (16 years, 2 months ago) by root
Branch: MAIN
CVS Tags: rel-4_151, rel-4_152, rel-4_91, rel-4_04, rel-4_23, rel-7_05, rel-4_21, rel-7_07, rel-7_01, rel-7_02, rel-7_03, rel-7_08, rel-7_09, rel-4_412, rel-4_81, rel-4_83, rel-4_82, rel-4_86, rel-4_352, rel-5_112, rel-3_41, rel-4_351, rel-7_16, rel-4_14, rel-4_15, rel-7_13, rel-4_13, rel-7_11, rel-5_251, rel-0_85, rel-4_331, rel-6_0, rel-6_1, rel-4_231, rel-4_233, rel-4_232, rel-4_8, rel-4_234, rel-4_4, rel-4_0, rel-6_11, rel-6_12, rel-6_13, rel-5_261, rel-4_05, rel-7_15, rel-7_14, rel-4_12, rel-7_12, rel-4_11, rel-6_02, rel-6_01, rel-5_271, rel-5_28, rel-5_29, rel-7_0, rel-5_21, rel-5_22, rel-5_23, rel-5_24, rel-5_26, rel-5_27, rel-5_1, rel-5_0, rel-5_3, rel-5_2, rel-7_04, rel-3_5, rel-3_4, rel-3_3, rel-4_22, rel-5_201, rel-5_202, rel-5_31, rel-4_161, rel-4_160, rel-5_111, rel-4_881, rel-4_411, rel-4_9, rel-5_01, rel-6_14, rel-4_45, rel-4_41, rel-4_42, rel-4_1, rel-4_2, rel-4_88, rel-4_3, rel-5_11, rel-5_12, rel-4_31, rel-4_32, rel-4_33, rel-4_34, rel-4_35, rel-4_03, HEAD
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 #!/opt/bin/perl
2    
3     # ugly code, don't look at it
4    
5     # ulimit -n 500000
6    
7     use strict;
8     use Event;
9     use EV;
10     use Socket;
11     use AnyEvent;
12     use Time::HiRes 'time';
13    
14     my $nr = $ARGV[0] || 1000;
15     my $M = $ARGV[1] || "AnyEvent";
16    
17     #$nr *= .01;
18    
19     my $todo;
20    
21     my $cv;
22    
23     my (@io, @timer);
24    
25     AnyEvent::detect;
26    
27     my $cb = sub {
28     $cv->broadcast unless --$todo;
29     };
30    
31     $| = 1;
32    
33     print "name $ARGV[2]\n";
34     print "watchers ", $nr * 2, "\n";
35    
36     my $m = qx<ps h -orss $$>;
37     my $c = time;
38    
39     my $fh = \*STDOUT;
40    
41     for (1..$nr) {
42     if ($M eq "EV") {
43     push @io, EV::io $fh, EV::WRITE, $cb;
44     push @timer, EV::timer 0, 0, $cb;
45     } elsif ($M eq "Event") {
46     push @io, Event->io (fd => $fh, poll => "w", cb => $cb);
47     push @timer, Event->timer (after => 0, cb => $cb);
48     } else {
49     push @io, AnyEvent->io (fh => $fh, poll => "w", cb => $cb);
50     push @timer, AnyEvent->timer (after => 0, cb => $cb);
51     }
52     }
53    
54     $c = (time - $c) / $nr / 2 * 1e6;
55     $m = int 0.5 + (qx<ps h -orss $$> - $m) * 1024 / $nr / 2;
56    
57     printf "bytes %d\n", $m;
58     printf "create %.2f\n", $c;
59    
60     $cv = AnyEvent->condvar;
61     $todo = $nr * 2;
62    
63     my $i = time;
64    
65     $cv->wait;
66    
67     $i = (time - $i) / $nr / 2 * 1e6;
68    
69     printf "invoke %.2f\n", $i;
70    
71     my $d = time;
72    
73     if ($M eq "Event") {
74     $_->cancel for (@io, @timer);
75     }
76     @io = @timer = ();
77    
78     {
79     my $w = AnyEvent->timer (after => 0, cb => sub { });
80     AnyEvent->one_event;
81     }
82    
83     $d = (time - $d) / $nr / 2 * 1e6;
84    
85     printf "destroy %.2f\n", $d;
86    
87