ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/lib/AnyEvent.pm
(Generate patch)

Comparing AnyEvent/lib/AnyEvent.pm (file contents):
Revision 1.287 by root, Tue Aug 25 12:05:30 2009 UTC vs.
Revision 1.290 by root, Tue Sep 1 18:27:46 2009 UTC

1106 1106
1107package AnyEvent; 1107package AnyEvent;
1108 1108
1109# basically a tuned-down version of common::sense 1109# basically a tuned-down version of common::sense
1110sub common_sense { 1110sub common_sense {
1111 # no warnings 1111 # from common:.sense 1.0
1112 ${^WARNING_BITS} ^= ${^WARNING_BITS}; 1112 ${^WARNING_BITS} = "\xfc\x3f\xf3\x00\x0f\xf3\xcf\xc0\xf3\xfc\x33\x03";
1113 # use strict vars subs 1113 # use strict vars subs
1114 $^H |= 0x00000600; 1114 $^H |= 0x00000600;
1115} 1115}
1116 1116
1117BEGIN { AnyEvent::common_sense } 1117BEGIN { AnyEvent::common_sense }
1118 1118
1119use Carp (); 1119use Carp ();
1120 1120
1121our $VERSION = '5.112'; 1121our $VERSION = '5.12';
1122our $MODEL; 1122our $MODEL;
1123 1123
1124our $AUTOLOAD; 1124our $AUTOLOAD;
1125our @ISA; 1125our @ISA;
1126 1126
1343 1343
1344package AnyEvent::Base; 1344package AnyEvent::Base;
1345 1345
1346# default implementations for many methods 1346# default implementations for many methods
1347 1347
1348sub _time { 1348sub _time() {
1349 # probe for availability of Time::HiRes 1349 # probe for availability of Time::HiRes
1350 if (eval "use Time::HiRes (); Time::HiRes::time (); 1") { 1350 if (eval "use Time::HiRes (); Time::HiRes::time (); 1") {
1351 warn "AnyEvent: using Time::HiRes for sub-second timing accuracy.\n" if $VERBOSE >= 8; 1351 warn "AnyEvent: using Time::HiRes for sub-second timing accuracy.\n" if $VERBOSE >= 8;
1352 *_time = \&Time::HiRes::time; 1352 *_time = \&Time::HiRes::time;
1353 # if (eval "use POSIX (); (POSIX::times())... 1353 # if (eval "use POSIX (); (POSIX::times())...
1373 1373
1374our $HAVE_ASYNC_INTERRUPT; 1374our $HAVE_ASYNC_INTERRUPT;
1375 1375
1376sub _have_async_interrupt() { 1376sub _have_async_interrupt() {
1377 $HAVE_ASYNC_INTERRUPT = 1*(!$ENV{PERL_ANYEVENT_AVOID_ASYNC_INTERRUPT} 1377 $HAVE_ASYNC_INTERRUPT = 1*(!$ENV{PERL_ANYEVENT_AVOID_ASYNC_INTERRUPT}
1378 && eval "use Async::Interrupt 1.0 (); 1") 1378 && eval "use Async::Interrupt 1.02 (); 1")
1379 unless defined $HAVE_ASYNC_INTERRUPT; 1379 unless defined $HAVE_ASYNC_INTERRUPT;
1380 1380
1381 $HAVE_ASYNC_INTERRUPT 1381 $HAVE_ASYNC_INTERRUPT
1382} 1382}
1383 1383
2368As you can see, the AnyEvent + EV combination even beats the 2368As you can see, the AnyEvent + EV combination even beats the
2369hand-optimised "raw sockets benchmark", while AnyEvent + its pure perl 2369hand-optimised "raw sockets benchmark", while AnyEvent + its pure perl
2370backend easily beats IO::Lambda and POE. 2370backend easily beats IO::Lambda and POE.
2371 2371
2372And even the 100% non-blocking version written using the high-level (and 2372And even the 100% non-blocking version written using the high-level (and
2373slow :) L<AnyEvent::Handle> abstraction beats both POE and IO::Lambda by a 2373slow :) L<AnyEvent::Handle> abstraction beats both POE and IO::Lambda
2374large margin, even though it does all of DNS, tcp-connect and socket I/O 2374higher level ("unoptimised") abstractions by a large margin, even though
2375in a non-blocking way. 2375it does all of DNS, tcp-connect and socket I/O in a non-blocking way.
2376 2376
2377The two AnyEvent benchmarks programs can be found as F<eg/ae0.pl> and 2377The two AnyEvent benchmarks programs can be found as F<eg/ae0.pl> and
2378F<eg/ae2.pl> in the AnyEvent distribution, the remaining benchmarks are 2378F<eg/ae2.pl> in the AnyEvent distribution, the remaining benchmarks are
2379part of the IO::lambda distribution and were used without any changes. 2379part of the IO::Lambda distribution and were used without any changes.
2380 2380
2381 2381
2382=head1 SIGNALS 2382=head1 SIGNALS
2383 2383
2384AnyEvent currently installs handlers for these signals: 2384AnyEvent currently installs handlers for these signals:

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines