From f6a8411d1b1ea938f77cebc0f5403163d3e2656b Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Thu, 27 Jan 2011 19:44:50 +0000 Subject: replace expensive % with faster (2-4x) functional equiv. git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1064276 13f79535-47bb-0310-9956-ffa450edef68 --- util-misc/apr_queue.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'util-misc') diff --git a/util-misc/apr_queue.c b/util-misc/apr_queue.c index 66b74dcea..413069918 100644 --- a/util-misc/apr_queue.c +++ b/util-misc/apr_queue.c @@ -185,7 +185,9 @@ APR_DECLARE(apr_status_t) apr_queue_push(apr_queue_t *queue, void *data) } queue->data[queue->in] = data; - queue->in = (queue->in + 1) % queue->bounds; + queue->in++; + if (queue->in >= queue->bounds) + queue->in -= queue->bounds; queue->nelts++; if (queue->empty_waiters) { @@ -225,7 +227,9 @@ APR_DECLARE(apr_status_t) apr_queue_trypush(apr_queue_t *queue, void *data) } queue->data[queue->in] = data; - queue->in = (queue->in + 1) % queue->bounds; + queue->in++; + if (queue->in >= queue->bounds) + queue->in -= queue->bounds; queue->nelts++; if (queue->empty_waiters) { @@ -297,7 +301,9 @@ APR_DECLARE(apr_status_t) apr_queue_pop(apr_queue_t *queue, void **data) *data = queue->data[queue->out]; queue->nelts--; - queue->out = (queue->out + 1) % queue->bounds; + queue->out++; + if (queue->out >= queue->bounds) + queue->out -= queue->bounds; if (queue->full_waiters) { Q_DBG("signal !full", queue); rv = apr_thread_cond_signal(queue->not_full); @@ -337,7 +343,9 @@ APR_DECLARE(apr_status_t) apr_queue_trypop(apr_queue_t *queue, void **data) *data = queue->data[queue->out]; queue->nelts--; - queue->out = (queue->out + 1) % queue->bounds; + queue->out++; + if (queue->out >= queue->bounds) + queue->out -= queue->bounds; if (queue->full_waiters) { Q_DBG("signal !full", queue); rv = apr_thread_cond_signal(queue->not_full); -- cgit v1.2.1