--- AnyEvent/lib/AnyEvent.pm 2008/04/25 07:43:25 1.72 +++ AnyEvent/lib/AnyEvent.pm 2008/04/25 07:47:22 1.74 @@ -937,15 +937,21 @@ The C module has a relatively high setup and callback invocation cost, but overall scores on the third place. -C's memory usage is quite a bit bit higher, features a faster -callback invocation and overall lands in the same class as C. +C's memory usage is quite a bit bit higher, but it features a +faster callback invocation and overall ends up in the same class as +C. However, Glib scales extremely badly, doubling the number of +watchers increases the processing time by more than a factor of four, +making it completely unusable when using larger numbers of watchers +(note that only a single file descriptor was used in the benchmark, so +inefficiencies of C do not account for this). -The C adaptor works relatively well, the fact that it crashes with +The C adaptor works relatively well. The fact that it crashes with more than 2000 watchers is a big setback, however, as correctness takes precedence over speed. Nevertheless, its performance is surprising, as the file descriptor is dup()ed for each watcher. This shows that the dup() employed by some adaptors is not a big performance issue (it does incur a -hidden memory cost inside the kernel, though). +hidden memory cost inside the kernel, though, that is not reflected in the +figures above). C, regardless of underlying event loop (wether using its pure perl select-based backend or the Event module) shows abysmal performance and @@ -964,7 +970,7 @@ The overhead AnyEvent adds is usually much smaller than the overhead of the actual event loop, only with extremely fast event loops such as the EV -adds Anyevent significant overhead. +adds AnyEvent significant overhead. And you should simply avoid POE like the plague if you want performance or reasonable memory usage.