… | |
… | |
766 | * a small-code-size 2-heap one and a ~1.5kb larger 4-heap |
766 | * a small-code-size 2-heap one and a ~1.5kb larger 4-heap |
767 | * which is more cache-efficient. |
767 | * which is more cache-efficient. |
768 | * the difference is about 5% with 50000+ watchers. |
768 | * the difference is about 5% with 50000+ watchers. |
769 | */ |
769 | */ |
770 | #define USE_4HEAP !EV_MINIMAL |
770 | #define USE_4HEAP !EV_MINIMAL |
|
|
771 | #define USE_4HEAP 1/* they do not work corretcly */ |
771 | #if USE_4HEAP |
772 | #if USE_4HEAP |
772 | |
773 | |
773 | #define DHEAP 4 |
774 | #define DHEAP 4 |
774 | #define HEAP0 (DHEAP - 1) /* index of first element in heap */ |
775 | #define HEAP0 (DHEAP - 1) /* index of first element in heap */ |
775 | |
776 | |
… | |
… | |
781 | |
782 | |
782 | for (;;) |
783 | for (;;) |
783 | { |
784 | { |
784 | int p = ((k - HEAP0 - 1) / DHEAP) + HEAP0; |
785 | int p = ((k - HEAP0 - 1) / DHEAP) + HEAP0; |
785 | |
786 | |
786 | if (p >= HEAP0 || heap [p]->at <= w->at) |
787 | if (p == k || heap [p]->at <= w->at) |
787 | break; |
788 | break; |
788 | |
789 | |
789 | heap [k] = heap [p]; |
790 | heap [k] = heap [p]; |
790 | ev_active (heap [k]) = k; |
791 | ev_active (heap [k]) = k; |
791 | k = p; |
792 | k = p; |