From 7cab20ce227655a6e6fc21f39f43efc8ec5f7a98 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 7 May 2008 15:16:56 +0000 Subject: *** empty log message *** --- Changes | 1 + ev.c | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Changes b/Changes index 7e88acf..d3d5820 100644 --- a/Changes +++ b/Changes @@ -1,5 +1,6 @@ Revision history for libev, a high-performance and full-featured event loop. +3.33 - use 1-based 2-heap for EV_MINIMAL, simplifies code, reduces codesize and makes for better cache-efficiency. - use 3-based 4-heap for !EV_MINIMAL. this makes better use diff --git a/ev.c b/ev.c index 5b8ba8d..132963c 100644 --- a/ev.c +++ b/ev.c @@ -770,7 +770,8 @@ fd_rearm_all (EV_P) #define USE_4HEAP !EV_MINIMAL #if USE_4HEAP -#define HEAP0 3 /* index of first element in heap */ +#define DHEAP 4 +#define HEAP0 (DHEAP - 1) /* index of first element in heap */ /* towards the root */ void inline_speed @@ -780,7 +781,7 @@ upheap (WT *heap, int k) for (;;) { - int p = ((k - HEAP0 - 1) / 4) + HEAP0; + int p = ((k - HEAP0 - 1) / DHEAP) + HEAP0; if (p >= HEAP0 || heap [p]->at <= w->at) break; @@ -805,10 +806,10 @@ downheap (WT *heap, int N, int k) { ev_tstamp minat; WT *minpos; - WT *pos = heap + 4 * (k - HEAP0) + HEAP0; + WT *pos = heap + DHEAP * (k - HEAP0) + HEAP0; // find minimum child - if (expect_true (pos +3 < E)) + if (expect_true (pos + DHEAP - 1 < E)) { /* fast path */ (minpos = pos + 0), (minat = (*minpos)->at); -- cgit v1.2.3