From: Willy Tarreau Date: Mon, 14 May 2007 00:11:39 +0000 (+0200) Subject: [MINOR] disable useless hint in wake_expired_tasks X-Git-Tag: v1.3.11~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1209033e46b3a4e93d9571911dc5c0b5daf5deba;p=thirdparty%2Fhaproxy.git [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. --- diff --git a/src/task.c b/src/task.c index 8d9d10cd0c..6190670943 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; }