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.96 by root, Sat Apr 26 11:16:16 2008 UTC vs.
Revision 1.100 by elmex, Sun Apr 27 19:15:43 2008 UTC

66 66
67Of course, if you want lots of policy (this can arguably be somewhat 67Of course, if you want lots of policy (this can arguably be somewhat
68useful) and you want to force your users to use the one and only event 68useful) and you want to force your users to use the one and only event
69model, you should I<not> use this module. 69model, you should I<not> use this module.
70 70
71#TODO#
72
73Net::IRC3
74AnyEvent::HTTPD
75AnyEvent::DNS
76IO::AnyEvent
77Net::FPing
78Net::XMPP2
79Coro
80
81AnyEvent::IRC
82AnyEvent::HTTPD
83AnyEvent::DNS
84AnyEvent::Handle
85AnyEvent::Socket
86AnyEvent::FPing
87AnyEvent::XMPP
88AnyEvent::SNMP
89Coro
71 90
72=head1 DESCRIPTION 91=head1 DESCRIPTION
73 92
74L<AnyEvent> provides an identical interface to multiple event loops. This 93L<AnyEvent> provides an identical interface to multiple event loops. This
75allows module authors to utilise an event loop without forcing module 94allows module authors to utilise an event loop without forcing module
457might chose the wrong one unless you load the correct one yourself. 476might chose the wrong one unless you load the correct one yourself.
458 477
459You can chose to use a rather inefficient pure-perl implementation by 478You can chose to use a rather inefficient pure-perl implementation by
460loading the C<AnyEvent::Impl::Perl> module, which gives you similar 479loading the C<AnyEvent::Impl::Perl> module, which gives you similar
461behaviour everywhere, but letting AnyEvent chose is generally better. 480behaviour everywhere, but letting AnyEvent chose is generally better.
481
482=head1 OTHER MODULES
483
484L<AnyEvent> itself comes with useful utility modules:
485
486To make it easier to do non-blocking IO the modules L<AnyEvent::Handle>
487and L<AnyEvent::Socket> are provided. L<AnyEvent::Handle> provides
488read and write buffers and manages watchers for reads and writes.
489L<AnyEvent::Socket> provides means to do non-blocking connects.
490
491Aside from those there are these modules that support AnyEvent (and use it
492for non-blocking IO):
493
494=over 4
495
496=item L<AnyEvent::FastPing>
497
498=item L<Net::IRC3>
499
500=item L<Net::XMPP2>
501
502=back
462 503
463=cut 504=cut
464 505
465package AnyEvent; 506package AnyEvent;
466 507
944 EV/EV 400000 244 0.56 0.46 0.31 EV native interface 985 EV/EV 400000 244 0.56 0.46 0.31 EV native interface
945 EV/Any 100000 244 2.50 0.46 0.29 EV + AnyEvent watchers 986 EV/Any 100000 244 2.50 0.46 0.29 EV + AnyEvent watchers
946 CoroEV/Any 100000 244 2.49 0.44 0.29 coroutines + Coro::Signal 987 CoroEV/Any 100000 244 2.49 0.44 0.29 coroutines + Coro::Signal
947 Perl/Any 100000 513 4.92 0.87 1.12 pure perl implementation 988 Perl/Any 100000 513 4.92 0.87 1.12 pure perl implementation
948 Event/Event 16000 516 31.88 31.30 0.85 Event native interface 989 Event/Event 16000 516 31.88 31.30 0.85 Event native interface
949 Event/Any 16000 936 39.17 33.63 1.43 Event + AnyEvent watchers 990 Event/Any 16000 590 35.75 31.42 1.08 Event + AnyEvent watchers
950 Glib/Any 16000 1357 98.22 12.41 54.00 quadratic behaviour 991 Glib/Any 16000 1357 98.22 12.41 54.00 quadratic behaviour
951 Tk/Any 2000 1860 26.97 67.98 14.00 SEGV with >> 2000 watchers 992 Tk/Any 2000 1860 26.97 67.98 14.00 SEGV with >> 2000 watchers
952 POE/Event 2000 6644 108.64 736.02 14.73 via POE::Loop::Event 993 POE/Event 2000 6644 108.64 736.02 14.73 via POE::Loop::Event
953 POE/Select 2000 6343 94.13 809.12 565.96 via POE::Loop::Select 994 POE/Select 2000 6343 94.13 809.12 565.96 via POE::Loop::Select
954 995
1067 1108
1068=head3 Results 1109=head3 Results
1069 1110
1070 name sockets create request 1111 name sockets create request
1071 EV 20000 69.01 11.16 1112 EV 20000 69.01 11.16
1072 Perl 20000 75.28 112.76 1113 Perl 20000 73.32 35.87
1073 Event 20000 212.62 257.32 1114 Event 20000 212.62 257.32
1074 Glib 20000 651.16 1896.30 1115 Glib 20000 651.16 1896.30
1075 POE 20000 349.67 12317.24 uses POE::Loop::Event 1116 POE 20000 349.67 12317.24 uses POE::Loop::Event
1076 1117
1077=head3 Discussion 1118=head3 Discussion
1123 1164
1124=head3 Results 1165=head3 Results
1125 1166
1126 name sockets create request 1167 name sockets create request
1127 EV 16 20.00 6.54 1168 EV 16 20.00 6.54
1169 Perl 16 25.75 12.62
1128 Event 16 81.27 35.86 1170 Event 16 81.27 35.86
1129 Glib 16 32.63 15.48 1171 Glib 16 32.63 15.48
1130 Perl 16 24.62 162.37
1131 POE 16 261.87 276.28 uses POE::Loop::Event 1172 POE 16 261.87 276.28 uses POE::Loop::Event
1132 1173
1133=head3 Discussion 1174=head3 Discussion
1134 1175
1135The benchmark tries to test the performance of a typical small 1176The benchmark tries to test the performance of a typical small
1136server. While knowing how various event loops perform is interesting, keep 1177server. While knowing how various event loops perform is interesting, keep
1137in mind that their overhead in this case is usually not as important, due 1178in mind that their overhead in this case is usually not as important, due
1138to the small absolute number of watchers. 1179to the small absolute number of watchers (that is, you need efficiency and
1180speed most when you have lots of watchers, not when you only have a few of
1181them).
1139 1182
1140EV is again fastest. 1183EV is again fastest.
1141 1184
1142The C-based event loops Event and Glib come in second this time, as the 1185The C-based event loops Event and Glib come in second this time, as the
1143overhead of running an iteration is much smaller in C than in Perl (little 1186overhead of running an iteration is much smaller in C than in Perl (little
1144code to execute in the inner loop, and perl's function calling overhead is 1187code to execute in the inner loop, and perl's function calling overhead is
1145high, and updating all the data structures is costly). 1188high, and updating all the data structures is costly).
1146 1189
1147The pure perl event loop is much slower, but still competitive. 1190The pure perl event loop is much slower, but still competitive.
1148 1191
1149POE also performs much better in this case, but is is stillf ar behind the 1192POE also performs much better in this case, but is is still far behind the
1150others. 1193others.
1151 1194
1152=head3 Summary 1195=head3 Summary
1153 1196
1154=over 4 1197=over 4

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines