From 1209033e46b3a4e93d9571911dc5c0b5daf5deba Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Mon, 14 May 2007 02:11:39 +0200 Subject: [PATCH] [MINOR] disable useless hint in wake_expired_tasks wake_expired_tasks() used a hint to avoid scanning the tree in most cases, but it looks like the hint is more expensive than reaching the first node in the tree. Disable it for now. --- src/task.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/task.c b/src/task.c index 8d9d10cd0..619067094 100644 --- a/src/task.c +++ b/src/task.c @@ -88,9 +88,12 @@ void wake_expired_tasks(struct timeval *next) struct task *task; void *data; +#ifdef WAKE_HINT_CHECK_FIRST /* * Hint: tasks are *rarely* expired. So we can try to optimize - * by not scanning the tree at all in most cases. + * by not scanning the tree at all in most cases. However, this + * code costs 160 more bytes which do not look much useful because + * the performance win is not obvious. */ if (likely(timer_wq.data != NULL)) { @@ -100,16 +103,15 @@ void wake_expired_tasks(struct timeval *next) return; } } - /* OK we lose. Let's scan the tree then. */ - tv_eternity(next); +#endif tree64_foreach(&timer_wq, data, stack, slen) { task = LIST_ELEM(data, struct task *, qlist); if (tv_isgt(&task->expire, &now)) { *next = task->expire; - break; + return; } /* @@ -124,6 +126,7 @@ void wake_expired_tasks(struct timeval *next) task->state = TASK_RUNNING; } } + tv_eternity(next); return; }