| Revision: | 1.1 |
| Committed: | Sat Apr 26 02:27:30 2008 UTC (17 years, 10 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 *** |
| # | Content |
|---|---|
| 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 |