… | |
… | |
2912 | =item Changing timer/periodic watchers (by autorepeat or calling again): O(log skipped_other_timers) |
2912 | =item Changing timer/periodic watchers (by autorepeat or calling again): O(log skipped_other_timers) |
2913 | |
2913 | |
2914 | That means that changing a timer costs less than removing/adding them |
2914 | That means that changing a timer costs less than removing/adding them |
2915 | as only the relative motion in the event queue has to be paid for. |
2915 | as only the relative motion in the event queue has to be paid for. |
2916 | |
2916 | |
2917 | =item Starting io/check/prepare/idle/signal/child watchers: O(1) |
2917 | =item Starting io/check/prepare/idle/signal/child/fork/async watchers: O(1) |
2918 | |
2918 | |
2919 | These just add the watcher into an array or at the head of a list. |
2919 | These just add the watcher into an array or at the head of a list. |
2920 | |
2920 | |
2921 | =item Stopping check/prepare/idle watchers: O(1) |
2921 | =item Stopping check/prepare/idle/fork/async watchers: O(1) |
2922 | |
2922 | |
2923 | =item Stopping an io/signal/child watcher: O(number_of_watchers_for_this_(fd/signal/pid % EV_PID_HASHSIZE)) |
2923 | =item Stopping an io/signal/child watcher: O(number_of_watchers_for_this_(fd/signal/pid % EV_PID_HASHSIZE)) |
2924 | |
2924 | |
2925 | These watchers are stored in lists then need to be walked to find the |
2925 | These watchers are stored in lists then need to be walked to find the |
2926 | correct watcher to remove. The lists are usually short (you don't usually |
2926 | correct watcher to remove. The lists are usually short (you don't usually |
… | |
… | |
2943 | |
2943 | |
2944 | Priorities are implemented by allocating some space for each |
2944 | Priorities are implemented by allocating some space for each |
2945 | priority. When doing priority-based operations, libev usually has to |
2945 | priority. When doing priority-based operations, libev usually has to |
2946 | linearly search all the priorities, but starting/stopping and activating |
2946 | linearly search all the priorities, but starting/stopping and activating |
2947 | watchers becomes O(1) w.r.t. prioritiy handling. |
2947 | watchers becomes O(1) w.r.t. prioritiy handling. |
|
|
2948 | |
|
|
2949 | =item Sending an ev_async: O(1) |
|
|
2950 | |
|
|
2951 | =item Processing ev_async_send: O(number_of_async_watchers) |
|
|
2952 | |
|
|
2953 | =item Processing signals: O(max_signal_number) |
|
|
2954 | |
|
|
2955 | Sending involves a syscall I<iff> there were no other C<ev_async_send> |
|
|
2956 | calls in the current loop iteration. Checking for async and signal events |
|
|
2957 | involves iterating over all running async watchers or all signal numbers. |
2948 | |
2958 | |
2949 | =back |
2959 | =back |
2950 | |
2960 | |
2951 | |
2961 | |
2952 | =head1 Win32 platform limitations and workarounds |
2962 | =head1 Win32 platform limitations and workarounds |