]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
[MINOR] disable useless hint in wake_expired_tasks
authorWilly Tarreau <w@1wt.eu>
Mon, 14 May 2007 00:11:39 +0000 (02:11 +0200)
committerWilly Tarreau <w@1wt.eu>
Mon, 14 May 2007 00:11:39 +0000 (02:11 +0200)
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

index 8d9d10cd0c6765fd959fbc025e9c3e049c99a847..6190670943b4ef1f8dc12f2173cdc89988c9aa6b 100644 (file)
@@ -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;
 }