apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ge...@everythingsucks.co.uk
Subject [Patch] poll/unix/poll.c:apr_pollset_poll() optimisation
Date Mon, 02 Jan 2006 20:43:54 GMT
Greetings,

Spotted an early-exit optimisation in poll/unix/poll.c:apr_pollset_poll().

We know the number of signalled descriptors, NUM, returned from the 
poll() call so we could bust out of the post-processing loop once we've 
added NUM signalled descriptors to our RESULT_SET.

Cheers
Gerry Calderhead

[gerry@devbox unix]$ rcsdiff -u6 poll.c
===================================================================
RCS file: RCS/poll.c,v
retrieving revision 1.1
diff -u6 -r1.1 poll.c
--- poll.c      2006/01/02 18:30:27     1.1
+++ poll.c      2006/01/02 20:16:14
@@ -259,13 +259,13 @@
     j = 0;
     for (i = 0; i < pollset->nelts; i++) {
         if (pollset->pollset[i].revents != 0) {
             pollset->result_set[j] = pollset->query_set[i];
             pollset->result_set[j].rtnevents =
                 get_revent(pollset->pollset[i].revents);
-            j++;
+            if ((++j)==(*num)) break;
         }
     }
     if (descriptors)
         *descriptors = pollset->result_set;
     return APR_SUCCESS;
}



Mime
View raw message