… | |
… | |
870 | mentioned will be used, and preference will be given to protocols |
870 | mentioned will be used, and preference will be given to protocols |
871 | mentioned earlier in the list. |
871 | mentioned earlier in the list. |
872 | |
872 | |
873 | This variable can effectively be used for denial-of-service attacks |
873 | This variable can effectively be used for denial-of-service attacks |
874 | against local programs (e.g. when setuid), although the impact is |
874 | against local programs (e.g. when setuid), although the impact is |
875 | likely small, as the program has to handle connection errors |
875 | likely small, as the program has to handle conenction and other |
876 | already- |
876 | failures anyways. |
877 | |
877 | |
878 | Examples: "PERL_ANYEVENT_PROTOCOLS=ipv4,ipv6" - prefer IPv4 over |
878 | Examples: "PERL_ANYEVENT_PROTOCOLS=ipv4,ipv6" - prefer IPv4 over |
879 | IPv6, but support both and try to use both. |
879 | IPv6, but support both and try to use both. |
880 | "PERL_ANYEVENT_PROTOCOLS=ipv4" - only support IPv4, never try to |
880 | "PERL_ANYEVENT_PROTOCOLS=ipv4" - only support IPv4, never try to |
881 | resolve or contact IPv6 addresses. |
881 | resolve or contact IPv6 addresses. |
… | |
… | |
1131 | *destroy* is the time, in microseconds, that it takes to destroy a |
1131 | *destroy* is the time, in microseconds, that it takes to destroy a |
1132 | single watcher. |
1132 | single watcher. |
1133 | |
1133 | |
1134 | Results |
1134 | Results |
1135 | name watchers bytes create invoke destroy comment |
1135 | name watchers bytes create invoke destroy comment |
1136 | EV/EV 400000 244 0.56 0.46 0.31 EV native interface |
1136 | EV/EV 400000 224 0.47 0.35 0.27 EV native interface |
1137 | EV/Any 100000 244 2.50 0.46 0.29 EV + AnyEvent watchers |
1137 | EV/Any 100000 224 2.88 0.34 0.27 EV + AnyEvent watchers |
1138 | CoroEV/Any 100000 244 2.49 0.44 0.29 coroutines + Coro::Signal |
1138 | CoroEV/Any 100000 224 2.85 0.35 0.28 coroutines + Coro::Signal |
1139 | Perl/Any 100000 513 4.92 0.87 1.12 pure perl implementation |
1139 | Perl/Any 100000 452 4.13 0.73 0.95 pure perl implementation |
1140 | Event/Event 16000 516 31.88 31.30 0.85 Event native interface |
1140 | Event/Event 16000 517 32.20 31.80 0.81 Event native interface |
1141 | Event/Any 16000 590 35.75 31.42 1.08 Event + AnyEvent watchers |
1141 | Event/Any 16000 590 35.85 31.55 1.06 Event + AnyEvent watchers |
1142 | Glib/Any 16000 1357 98.22 12.41 54.00 quadratic behaviour |
1142 | Glib/Any 16000 1357 102.33 12.31 51.00 quadratic behaviour |
1143 | Tk/Any 2000 1860 26.97 67.98 14.00 SEGV with >> 2000 watchers |
1143 | Tk/Any 2000 1860 27.20 66.31 14.00 SEGV with >> 2000 watchers |
1144 | POE/Event 2000 6644 108.64 736.02 14.73 via POE::Loop::Event |
1144 | POE/Event 2000 6328 109.99 751.67 14.02 via POE::Loop::Event |
1145 | POE/Select 2000 6343 94.13 809.12 565.96 via POE::Loop::Select |
1145 | POE/Select 2000 6027 94.54 809.13 579.80 via POE::Loop::Select |
1146 | |
1146 | |
1147 | Discussion |
1147 | Discussion |
1148 | The benchmark does *not* measure scalability of the event loop very |
1148 | The benchmark does *not* measure scalability of the event loop very |
1149 | well. For example, a select-based event loop (such as the pure perl one) |
1149 | well. For example, a select-based event loop (such as the pure perl one) |
1150 | can never compete with an event loop that uses epoll when the number of |
1150 | can never compete with an event loop that uses epoll when the number of |