rax icon indicating copy to clipboard operation
rax copied to clipboard

raxLowWalk , divide and conquer instead of linear scan

Open anunique opened this issue 6 years ago • 1 comments

what about something like: int bleh = h->size; do{ bleh/=2; if (v[j] < s[i]) { j+=bleh; } else if (v[j] > s[i]) { j-=bleh; } else { //got hit } }while (bleh>1);

divide and conquer scanning instead of linear?

        /* Even when h->size is large, linear scan provides good
         * performances compared to other approaches that are in theory
         * more sounding, like performing a binary search. */
        for (j = 0; j < h->size; j++) {
            if (v[j] == s[i]) break;
        }

anunique avatar Oct 30 '19 17:10 anunique

I tried and it was slower, but actually later I found pathological cases where it could help. What to do IMHO is to test it a lot and find the right threshold when to switch to binary search.

antirez avatar Oct 30 '19 18:10 antirez