| Revision: | 1.1 |
| Committed: | Sat Apr 26 02:27:30 2008 UTC (18 years, 5 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 *** |
| # | 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 | # $0 <fds> <active> | ||
| 7 | |||
| 8 | use strict; | ||
| 9 | use Event; | ||
| 10 | use EV; | ||
| 11 | use Socket; | ||
| 12 | use AnyEvent; | ||
| 13 | use Time::HiRes 'time'; | ||
| 14 | |||
| 15 | my $nr = $ARGV[0] || 1000; | ||
| 16 | |||
| 17 | $| = 1; | ||
| 18 | |||
| 19 | print "name $ENV{PERL_ANYEVENT_MODEL}\n"; | ||
| 20 | print "sockets ", $nr * 2, "\n"; | ||
| 21 | |||
| 22 | my $count; | ||
| 23 | |||
| 24 | AnyEvent::detect; | ||
| 25 | |||
| 26 | my $c = time; | ||
| 27 | |||
| 28 | my @conn; @conn = map { | ||
| 29 | socketpair my $a, my $b, AF_UNIX, SOCK_STREAM, PF_UNSPEC or die "$!"; | ||
| 30 | my $self; $self = { | ||
| 31 | r => $a, | ||
| 32 | w => $b, | ||
| 33 | rw => AnyEvent->io (fh => $a, poll => "r", cb => sub { | ||
| 34 | ++$count; | ||
| 35 | sysread $a, my $buf, 1; | ||
| 36 | syswrite $conn[rand @conn]{w}, $buf, 1; | ||
| 37 | $self->{to} = AnyEvent->timer (after => 3600, cb => sub { die }); | ||
| 38 | }), | ||
| 39 | to => AnyEvent->timer (after => 3600, cb => sub { die }), | ||
| 40 | }; | ||
| 41 | $self | ||
| 42 | } 1 .. $nr; | ||
| 43 | |||
| 44 | $c = (time - $c) / $nr * 1e6; | ||
| 45 | |||
| 46 | printf "create %.2f\n", $c; | ||
| 47 | |||
| 48 | for (1 .. $ARGV[1] || $nr * 0.01) { | ||
| 49 | syswrite $conn[rand @conn]{w}, $_, 1; | ||
| 50 | } | ||
| 51 | |||
| 52 | my $i = time; | ||
| 53 | |||
| 54 | my $stop = AnyEvent->timer (after => 1, cb => sub { | ||
| 55 | $i = (time - $i) / $count * 1e6; | ||
| 56 | printf "request %.2f\n", $i; | ||
| 57 | exit; | ||
| 58 | }); | ||
| 59 | |||
| 60 | AnyEvent->condvar->wait; | ||
| 61 | |||
| 62 | |||
| 63 |