X-Git-Url: https://git.llucax.com/software/libev.git/blobdiff_plain/1ef940ed393da8f8d74505196399215d6bb21016..39ca7b64db757c30ab6f0dc5dad63206f1d5a375:/ev.html?ds=sidebyside diff --git a/ev.html b/ev.html index 9192f32..63ddf3b 100644 --- a/ev.html +++ b/ev.html @@ -6,7 +6,7 @@ - + @@ -2241,6 +2241,11 @@ that everybody includes and which overrides some configure choices:

In this section the complexities of (many of) the algorithms used inside libev will be explained. For complexity discussions about backends see the documentation for ev_default_init.

+

All of the following are about amortised time: If an array needs to be +extended, libev needs to realloc and move the whole array, but this +happens asymptotically never with higher number of elements, so O(1) might +mean it might do a lengthy realloc operation in rare cases, but on average +it is much faster and asymptotically approaches constant time.

Starting and stopping timer/periodic watchers: O(log skipped_other_timers)
@@ -2256,12 +2261,9 @@ as only the relative motion in the event queue has to be paid for.

Starting io/check/prepare/idle/signal/child watchers: O(1)
-

These just add the watcher into an array or at the head of a list. If -the array needs to be extended libev needs to realloc and move the whole -array, but this happen asymptotically less and less with more watchers, -thus amortised O(1).

+

These just add the watcher into an array or at the head of a list. +=item Stopping check/prepare/idle watchers: O(1)

-
Stopping check/prepare/idle watchers: O(1)
Stopping an io/signal/child watcher: O(number_of_watchers_for_this_(fd/signal/pid % EV_PID_HASHSIZE))

These watchers are stored in lists then need to be walked to find the