AnyEvent-Net-Curl-Queued
view release on metacpan or search on metacpan
lib/AnyEvent/Net/Curl/Queued.pm view on Meta::CPAN
The test platform configuration:
=over 4
=item *
Intel® Core⢠i7-2600 CPU @ 3.40GHz with 8 GB RAM;
=item *
Ubuntu 11.10 (64-bit);
=item *
Perl v5.16.2 (installed via L<perlbrew>);
=item *
libcurl/7.28.0 (without AsynchDNS, which slows down L<curl_easy_init()|http://curl.haxx.se/libcurl/c/curl_easy_init.html>).
=back
The script F<eg/benchmark.pl> uses L<Benchmark::Forking> and L<Class::Load> to keep UA modules isolated and loaded only once.
$ taskset 1 perl benchmark.pl --count 100 --parallel 8 --repeat 10
Request rate WWW::M LWP::UA L::P::N::C Mojo::UA HTTP::L HTTP::T lftp P::D AE::C::M YADA Furl curl wget LWP::C
WWW::Mechanize v1.72 534/s -- -32% -61% -63% -80% -82% -83% -84% -85% -86% -94% -95% -97% -97%
LWP::UserAgent v6.04 782/s 46% -- -42% -46% -71% -73% -75% -76% -77% -79% -92% -93% -95% -95%
LWP::Protocol::Net::Curl v0.011 1360/s 154% 74% -- -6% -50% -53% -57% -59% -61% -64% -86% -88% -91% -91%
Mojo::UserAgent v3.82 1450/s 171% 85% 7% -- -46% -50% -54% -56% -58% -62% -85% -87% -91% -91%
HTTP::Lite v2.4 2700/s 405% 245% 98% 86% -- -7% -14% -18% -22% -29% -71% -76% -82% -83%
HTTP::Tiny v0.025 2910/s 445% 272% 114% 101% 8% -- -7% -11% -16% -23% -69% -74% -81% -81%
lftp v4.3.1 3140/s 488% 302% 131% 117% 17% 8% -- -4% -9% -17% -67% -72% -80% -80%
Parallel::Downloader v0.121560 3280/s 514% 319% 141% 127% 22% 13% 4% -- -5% -13% -65% -70% -79% -79%
AnyEvent::Curl::Multi v1.1 3460/s 548% 342% 155% 139% 28% 19% 10% 5% -- -9% -63% -69% -77% -78%
YADA v0.038 3790/s 610% 385% 179% 162% 41% 30% 21% 16% 10% -- -60% -66% -75% -76%
Furl v2.01 9420/s 1663% 1104% 593% 550% 249% 223% 200% 187% 172% 148% -- -15% -39% -40%
curl v7.28.0 11100/s 1977% 1318% 716% 666% 311% 281% 253% 238% 221% 193% 18% -- -28% -29%
wget v1.12 15400/s 2777% 1864% 1031% 961% 470% 428% 389% 368% 344% 305% 63% 39% -- -1%
LWP::Curl v0.12 15600/s 2818% 1892% 1047% 976% 478% 435% 396% 375% 350% 311% 65% 40% 1% --
(output formatted to show module versions at row labels and keep column labels abbreviated)
=head1 ATTRIBUTES
=head2 allow_dups
Allow duplicate requests (default: false).
By default, requests to the same URL (more precisely, requests with the same L<signature|AnyEvent::Net::Curl::Queued::Easy/sha> are issued only once.
To seed POST parameters, you must extend the L<AnyEvent::Net::Curl::Queued::Easy> class.
Setting C<allow_dups> to true value disables request checks.
=head2 common_opts
L<AnyEvent::Net::Curl::Queued::Easy/opts> attribute common to all workers initialized under the same queue.
You may define C<User-Agent> string here.
=head2 http_response
Encapsulate the response with L<HTTP::Response> (only when the scheme is HTTP/HTTPS); a global version of L<AnyEvent::Net::Curl::Queued::Easy/http_response>.
Default: disabled.
=head2 completed
Count completed requests.
=head2 cv
L<AnyEvent> condition variable.
Initialized automatically, unless you specify your own.
Also reset automatically after L</wait>, so keep your own reference if you really need it!
=head2 max
Maximum number of parallel connections (default: 4; minimum value: 1).
=head2 multi
L<Net::Curl::Multi> instance.
=head2 queue
C<ArrayRef> to the queue.
Has the following helper methods:
=head2 queue_push
Append item at the end of the queue.
=head2 queue_unshift
Prepend item at the top of the queue.
=head2 dequeue
Shift item from the top of the queue.
=head2 count
Number of items in queue.
=head2 share
L<Net::Curl::Share> instance.
=head2 stats
L<AnyEvent::Net::Curl::Queued::Stats> instance.
=head2 timeout
Timeout (default: 60 seconds).
=head2 unique
Signature cache.
=head2 watchdog
The last resort against the non-deterministic chaos of evil lurking sockets.
( run in 1.028 second using v1.01-cache-2.11-cpan-5837b0d9d2c )