diff options
author | root <root> | 2004-08-03 15:37:48 +0000 |
---|---|---|
committer | root <root> | 2004-08-03 15:37:48 +0000 |
commit | b26af6a3938b12c5899e4792b6214f20362bd8cc (patch) | |
tree | 246c5baec133b3f986734371cec1fce75dcf012b /lzf_c.c | |
parent | 87c2b1de373fd1b43a870f66bf3aa97260d40355 (diff) |
*** empty log message ***
Diffstat (limited to 'lzf_c.c')
-rw-r--r-- | lzf_c.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -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)) |