… | |
… | |
861 | no warnings; |
861 | no warnings; |
862 | use strict qw(vars subs); |
862 | use strict qw(vars subs); |
863 | |
863 | |
864 | use Carp; |
864 | use Carp; |
865 | |
865 | |
866 | our $VERSION = 4.3; |
866 | our $VERSION = 4.34; |
867 | our $MODEL; |
867 | our $MODEL; |
868 | |
868 | |
869 | our $AUTOLOAD; |
869 | our $AUTOLOAD; |
870 | our @ISA; |
870 | our @ISA; |
871 | |
871 | |
… | |
… | |
1263 | used, and preference will be given to protocols mentioned earlier in the |
1263 | used, and preference will be given to protocols mentioned earlier in the |
1264 | list. |
1264 | list. |
1265 | |
1265 | |
1266 | This variable can effectively be used for denial-of-service attacks |
1266 | This variable can effectively be used for denial-of-service attacks |
1267 | against local programs (e.g. when setuid), although the impact is likely |
1267 | against local programs (e.g. when setuid), although the impact is likely |
1268 | small, as the program has to handle connection errors already- |
1268 | small, as the program has to handle conenction and other failures anyways. |
1269 | |
1269 | |
1270 | Examples: C<PERL_ANYEVENT_PROTOCOLS=ipv4,ipv6> - prefer IPv4 over IPv6, |
1270 | Examples: C<PERL_ANYEVENT_PROTOCOLS=ipv4,ipv6> - prefer IPv4 over IPv6, |
1271 | but support both and try to use both. C<PERL_ANYEVENT_PROTOCOLS=ipv4> |
1271 | but support both and try to use both. C<PERL_ANYEVENT_PROTOCOLS=ipv4> |
1272 | - only support IPv4, never try to resolve or contact IPv6 |
1272 | - only support IPv4, never try to resolve or contact IPv6 |
1273 | addresses. C<PERL_ANYEVENT_PROTOCOLS=ipv6,ipv4> support either IPv4 or |
1273 | addresses. C<PERL_ANYEVENT_PROTOCOLS=ipv6,ipv4> support either IPv4 or |
… | |
… | |
1533 | watcher. |
1533 | watcher. |
1534 | |
1534 | |
1535 | =head3 Results |
1535 | =head3 Results |
1536 | |
1536 | |
1537 | name watchers bytes create invoke destroy comment |
1537 | name watchers bytes create invoke destroy comment |
1538 | EV/EV 400000 244 0.56 0.46 0.31 EV native interface |
1538 | EV/EV 400000 224 0.47 0.35 0.27 EV native interface |
1539 | EV/Any 100000 244 2.50 0.46 0.29 EV + AnyEvent watchers |
1539 | EV/Any 100000 224 2.88 0.34 0.27 EV + AnyEvent watchers |
1540 | CoroEV/Any 100000 244 2.49 0.44 0.29 coroutines + Coro::Signal |
1540 | CoroEV/Any 100000 224 2.85 0.35 0.28 coroutines + Coro::Signal |
1541 | Perl/Any 100000 513 4.92 0.87 1.12 pure perl implementation |
1541 | Perl/Any 100000 452 4.13 0.73 0.95 pure perl implementation |
1542 | Event/Event 16000 516 31.88 31.30 0.85 Event native interface |
1542 | Event/Event 16000 517 32.20 31.80 0.81 Event native interface |
1543 | Event/Any 16000 590 35.75 31.42 1.08 Event + AnyEvent watchers |
1543 | Event/Any 16000 590 35.85 31.55 1.06 Event + AnyEvent watchers |
1544 | Glib/Any 16000 1357 98.22 12.41 54.00 quadratic behaviour |
1544 | Glib/Any 16000 1357 102.33 12.31 51.00 quadratic behaviour |
1545 | Tk/Any 2000 1860 26.97 67.98 14.00 SEGV with >> 2000 watchers |
1545 | Tk/Any 2000 1860 27.20 66.31 14.00 SEGV with >> 2000 watchers |
1546 | POE/Event 2000 6644 108.64 736.02 14.73 via POE::Loop::Event |
1546 | POE/Event 2000 6328 109.99 751.67 14.02 via POE::Loop::Event |
1547 | POE/Select 2000 6343 94.13 809.12 565.96 via POE::Loop::Select |
1547 | POE/Select 2000 6027 94.54 809.13 579.80 via POE::Loop::Select |
1548 | |
1548 | |
1549 | =head3 Discussion |
1549 | =head3 Discussion |
1550 | |
1550 | |
1551 | The benchmark does I<not> measure scalability of the event loop very |
1551 | The benchmark does I<not> measure scalability of the event loop very |
1552 | well. For example, a select-based event loop (such as the pure perl one) |
1552 | well. For example, a select-based event loop (such as the pure perl one) |