Browse Source

add some small complexities section

master
Marc Alexander Lehmann 14 years ago
parent
commit
431e7d03bf
  1. 29
      ev.3
  2. 30
      ev.html
  3. 29
      ev.pod

29
ev.3

@ -1297,11 +1297,12 @@ pseudo-code only of course:
\& static ev_timer tw;
.Ve
.PP
.Vb 8
.Vb 9
\& static void
\& io_cb (ev_loop *loop, ev_io *w, int revents)
\& {
\& // set the relevant poll flags
\& // could also call adns_processreadable etc. here
\& struct pollfd *fd = (struct pollfd *)w->data;
\& if (revents & EV_READ ) fd->revents |= fd->events & POLLIN;
\& if (revents & EV_WRITE) fd->revents |= fd->events & POLLOUT;
@ -1902,6 +1903,32 @@ And a \fIev_cpp.C\fR implementation file that contains libev proper and is compi
\& #include "ev_cpp.h"
\& #include "ev.c"
.Ve
.SH "COMPLEXITIES"
.IX Header "COMPLEXITIES"
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 \f(CW\*(C`ev_default_init\*(C'\fR.
.RS 4
.IP "Starting and stopping timer/periodic watchers: O(log skipped_other_timers)" 4
.IX Item "Starting and stopping timer/periodic watchers: O(log skipped_other_timers)"
.PD 0
.IP "Changing timer/periodic watchers (by autorepeat, again): O(log skipped_other_timers)" 4
.IX Item "Changing timer/periodic watchers (by autorepeat, again): O(log skipped_other_timers)"
.IP "Starting io/check/prepare/idle/signal/child watchers: O(1)" 4
.IX Item "Starting io/check/prepare/idle/signal/child watchers: O(1)"
.IP "Stopping check/prepare/idle watchers: O(1)" 4
.IX Item "Stopping check/prepare/idle watchers: O(1)"
.IP "Stopping an io/signal/child watcher: O(number_of_watchers_for_this_(fd/signal/pid % 16))" 4
.IX Item "Stopping an io/signal/child watcher: O(number_of_watchers_for_this_(fd/signal/pid % 16))"
.IP "Finding the next timer per loop iteration: O(1)" 4
.IX Item "Finding the next timer per loop iteration: O(1)"
.IP "Each change on a file descriptor per loop iteration: O(number_of_watchers_for_this_fd)" 4
.IX Item "Each change on a file descriptor per loop iteration: O(number_of_watchers_for_this_fd)"
.IP "Activating one watcher: O(1)" 4
.IX Item "Activating one watcher: O(1)"
.RE
.RS 4
.PD
.SH "AUTHOR"
.IX Header "AUTHOR"
Marc Lehmann <libev@schmorp.de>.

30
ev.html

@ -6,7 +6,7 @@
<meta name="description" content="Pod documentation for libev" />
<meta name="inputfile" content="&lt;standard input&gt;" />
<meta name="outputfile" content="&lt;standard output&gt;" />
<meta name="created" content="Mon Nov 26 10:52:13 2007" />
<meta name="created" content="Mon Nov 26 11:20:35 2007" />
<meta name="generator" content="Pod::Xhtml 1.57" />
<link rel="stylesheet" href="http://res.tst.eu/pod.css"/></head>
<body>
@ -52,6 +52,7 @@
<li><a href="#EXAMPLES">EXAMPLES</a></li>
</ul>
</li>
<li><a href="#COMPLEXITIES">COMPLEXITIES</a></li>
<li><a href="#AUTHOR">AUTHOR</a>
</li>
</ul><hr />
@ -1178,6 +1179,7 @@ pseudo-code only of course:</p>
io_cb (ev_loop *loop, ev_io *w, int revents)
{
// set the relevant poll flags
// could also call adns_processreadable etc. here
struct pollfd *fd = (struct pollfd *)w-&gt;data;
if (revents &amp; EV_READ ) fd-&gt;revents |= fd-&gt;events &amp; POLLIN;
if (revents &amp; EV_WRITE) fd-&gt;revents |= fd-&gt;events &amp; POLLOUT;
@ -1755,8 +1757,34 @@ that everybody includes and which overrides some autoconf choices:</p>
<pre> #include &quot;ev_cpp.h&quot;
#include &quot;ev.c&quot;
</pre>
</div>
<h1 id="COMPLEXITIES">COMPLEXITIES</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="COMPLEXITIES_CONTENT">
<p>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 <code>ev_default_init</code>.</p>
<p>
<dl>
<dt>Starting and stopping timer/periodic watchers: O(log skipped_other_timers)</dt>
<dt>Changing timer/periodic watchers (by autorepeat, again): O(log skipped_other_timers)</dt>
<dt>Starting io/check/prepare/idle/signal/child watchers: O(1)</dt>
<dt>Stopping check/prepare/idle watchers: O(1)</dt>
<dt>Stopping an io/signal/child watcher: O(number_of_watchers_for_this_(fd/signal/pid % 16))</dt>
<dt>Finding the next timer per loop iteration: O(1)</dt>
<dt>Each change on a file descriptor per loop iteration: O(number_of_watchers_for_this_fd)</dt>
<dt>Activating one watcher: O(1)</dt>
</dl>
</p>
</div>
<h1 id="AUTHOR">AUTHOR</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="AUTHOR_CONTENT">

29
ev.pod

@ -1162,6 +1162,7 @@ pseudo-code only of course:
io_cb (ev_loop *loop, ev_io *w, int revents)
{
// set the relevant poll flags
// could also call adns_processreadable etc. here
struct pollfd *fd = (struct pollfd *)w->data;
if (revents & EV_READ ) fd->revents |= fd->events & POLLIN;
if (revents & EV_WRITE) fd->revents |= fd->events & POLLOUT;
@ -1757,6 +1758,34 @@ And a F<ev_cpp.C> implementation file that contains libev proper and is compiled
#include "ev_cpp.h"
#include "ev.c"
=head1 COMPLEXITIES
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 C<ev_default_init>.
=over 4
=item Starting and stopping timer/periodic watchers: O(log skipped_other_timers)
=item Changing timer/periodic watchers (by autorepeat, again): O(log skipped_other_timers)
=item Starting io/check/prepare/idle/signal/child watchers: O(1)
=item Stopping check/prepare/idle watchers: O(1)
=item Stopping an io/signal/child watcher: O(number_of_watchers_for_this_(fd/signal/pid % 16))
=item Finding the next timer per loop iteration: O(1)
=item Each change on a file descriptor per loop iteration: O(number_of_watchers_for_this_fd)
=item Activating one watcher: O(1)
=back
=head1 AUTHOR
Marc Lehmann <libev@schmorp.de>.

Loading…
Cancel
Save