LWP vs AnyEvent::HTTP (+ Coro)

AnyEvent::HTTPで同時にアクセスしないようにしてテスト

% perl -I. anyevnet_http.pl
Benchmark: timing 3000 iterations of anyevent, lwp...
  anyevent:  3 wallclock secs ( 1.57 usr +  1.27 sys =  2.84 CPU) @ 1056.34/s (n=3000)
       lwp:  6 wallclock secs ( 4.25 usr +  1.22 sys =  5.47 CPU) @ 548.45/s (n=3000)

script

use Benchmark;
use LWP::UserAgent;
use AnyEvent;
use AnyEvent::HTTP qw//;

$AnyEvent::HTTP::MAX_PER_HOST = 1;
my $count = 3000;

timethese( $count , {
    'lwp' => sub {
        my $ua = LWP::UserAgent->new;
        my $res = $ua->get('http://localhost/')
    },
    'anyevent' => sub {
        my $cv = AE::cv;
        AnyEvent::HTTP::http_get 'http://localhost/', sub { $cv->send('1'); };
        $cv->recv;
    },
});

LWPは速くない


同じようにCoro::LWP

若干遅くなる

Benchmark: timing 3000 iterations of coro...
      coro:  5 wallclock secs ( 1.75 usr +  3.83 sys =  5.58 CPU) @ 537.63/s (n=3000)

use Benchmark;
use Coro;
use Coro::LWP;
use LWP::UserAgent;

my $count = 3000;

async {
timethese( $count , {
    'coro' => sub {
        my $ua = LWP::UserAgent->new;
        my $res = $ua->get('http://localhost/')
    },
});
exit;
};

schedule;
created by blog.nomadscafe.jp

コメント

コメントはありません

コメントを投稿

コメントを投稿するにはログインが必要です