#!/usr/bin/perl -w use strict; use Benchmark qw(:all); use lib 'src/WWW-Curl-Lite/lib'; use WWW::Curl::Lite::Request; use WWW::Curl::Lite; use LWP::UserAgent; use LWP::Parallel::UserAgent; use HTTP::Request; use HTTP::MHTTP; my $request = new WWW::Curl::Lite::Request( { url => 'http://127.0.0.1' } ); my $curl = new WWW::Curl::Lite; my $ua = new LWP::UserAgent; my $pua = new LWP::Parallel::UserAgent; my $req = new HTTP::Request( GET => 'http://127.0.0.1' ); timethese( 100, { 'curl' => sub { for ( 1 .. 10 ) { $curl->register($request) } $curl->request; }, 'lwp' => sub { for ( 1 .. 10 ) { $ua->request($req) } }, 'lwp-parallel' => sub { $pua->initialize; $pua->nonblock(1); for ( 1 .. 10 ) { $pua->register($req) } $pua->wait; }, 'mhttp' => sub { for ( 1 .. 10 ) { http_init(); http_call( "GET", "http://127.0.0.1" ); http_response(); } } } ); #### Benchmark: timing 100 iterations of curl, lwp, lwp-parallel, mhttp... curl: 21 wallclock secs ( 1.00 usr + 0.17 sys = 1.17 CPU) @ 85.47/s (n=100) lwp: 36 wallclock secs ( 6.75 usr + 0.53 sys = 7.28 CPU) @ 13.74/s (n=100) lwp-parallel: 38 wallclock secs (11.04 usr + 0.61 sys = 11.65 CPU) @ 8.58/s (n=100) mhttp: 32 wallclock secs ( 0.19 usr + 0.26 sys = 0.45 CPU) @ 222.22/s (n=100)