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

Comparing AnyEvent/README (file contents):
Revision 1.31 by root, Thu Oct 2 06:42:39 2008 UTC vs.
Revision 1.33 by root, Thu Oct 30 03:43:13 2008 UTC

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.14 0.75 0.99 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
1331 1331
1332 Summary 1332 Summary
1333 * C-based event loops perform very well with small number of watchers, 1333 * C-based event loops perform very well with small number of watchers,
1334 as the management overhead dominates. 1334 as the management overhead dominates.
1335 1335
1336SIGNALS
1337 AnyEvent currently installs handlers for these signals:
1338
1339 SIGCHLD
1340 A handler for "SIGCHLD" is installed by AnyEvent's child watcher
1341 emulation for event loops that do not support them natively. Also,
1342 some event loops install a similar handler.
1343
1344 SIGPIPE
1345 A no-op handler is installed for "SIGPIPE" when $SIG{PIPE} is
1346 "undef" when AnyEvent gets loaded.
1347
1348 The rationale for this is that AnyEvent users usually do not really
1349 depend on SIGPIPE delivery (which is purely an optimisation for
1350 shell use, or badly-written programs), but "SIGPIPE" can cause
1351 spurious and rare program exits as a lot of people do not expect
1352 "SIGPIPE" when writing to some random socket.
1353
1354 The rationale for installing a no-op handler as opposed to ignoring
1355 it is that this way, the handler will be restored to defaults on
1356 exec.
1357
1358 Feel free to install your own handler, or reset it to defaults.
1359
1336FORK 1360FORK
1337 Most event libraries are not fork-safe. The ones who are usually are 1361 Most event libraries are not fork-safe. The ones who are usually are
1338 because they rely on inefficient but fork-safe "select" or "poll" calls. 1362 because they rely on inefficient but fork-safe "select" or "poll" calls.
1339 Only EV is fully fork-aware. 1363 Only EV is fully fork-aware.
1340 1364

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines