From b26af6a3938b12c5899e4792b6214f20362bd8cc Mon Sep 17 00:00:00 2001 From: root Date: Tue, 3 Aug 2004 15:37:48 +0000 Subject: *** empty log message *** --- lzf_c.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'lzf_c.c') diff --git a/lzf_c.c b/lzf_c.c index 3ffbc9f..da6b926 100644 --- a/lzf_c.c +++ b/lzf_c.c @@ -48,16 +48,18 @@ */ #define FRST(p) (((p[0]) << 8) + p[1]) #define NEXT(v,p) (((v) << 8) + p[2]) -#define IDX(h) ((((h ^ (h << 5)) >> (3*8 - HLOG)) + h*3) & (HSIZE - 1)) +#define IDX(h) ((((h ^ (h << 5)) >> (3*8 - HLOG)) - h*5) & (HSIZE - 1)) /* * IDX works because it is very similar to a multiplicative hash, e.g. - * (h * 57321 >> (3*8 - HLOG)) + * ((h * 57321 >> (3*8 - HLOG)) & (HSIZE - 1)) + * the latter is also quite fast on newer CPUs, and sligthly better + * * the next one is also quite good, albeit slow ;) * (int)(cos(h & 0xffffff) * 1e6) */ #if 0 -/* original lzv-like hash function */ +/* original lzv-like hash function, much worse and thus slower */ # define FRST(p) (p[0] << 5) ^ p[1] # define NEXT(v,p) ((v) << 5) ^ p[2] # define IDX(h) ((h) & (HSIZE - 1)) -- cgit v1.2.3