From: Hans Kristian Rosbach Date: Fri, 21 Aug 2020 14:17:55 +0000 (+0200) Subject: Increase hash table size from 15 to 16 bits. X-Git-Tag: 1.9.9-b1~75 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cbc3962b937315ccfb0108a6a96ee005328f467c;p=thirdparty%2Fzlib-ng.git Increase hash table size from 15 to 16 bits. This gives a good performance increase, and usually also improves compression. Make separate define HASH_SLIDE for fallback version of UPDATE_HASH. --- diff --git a/deflate.h b/deflate.h index f9db02bb..ef84bde0 100644 --- a/deflate.h +++ b/deflate.h @@ -68,9 +68,9 @@ #define FINISH_STATE 666 /* stream complete */ /* Stream status */ -#define HASH_BITS 15 /* log2(HASH_SIZE) */ -#define HASH_SIZE 32768 /* number of elements in hash table */ -#define HASH_MASK 0x7FFF /* HASH_SIZE-1 */ +#define HASH_BITS 16u /* log2(HASH_SIZE) */ +#define HASH_SIZE 65536u /* number of elements in hash table */ +#define HASH_MASK (HASH_SIZE - 1u) /* HASH_SIZE-1 */ /* Data structure describing a single value and its code string. */ diff --git a/insert_string.c b/insert_string.c index 72336681..4ddf9ae5 100644 --- a/insert_string.c +++ b/insert_string.c @@ -14,8 +14,10 @@ * input characters, so that a running hash key can be computed from the * previous key instead of complete recalculation each time. */ +#define HASH_SLIDE 16 // Number of bits to slide hash + #define UPDATE_HASH(s, h, val) \ - h = ((val * 2654435761U) >> (32 - HASH_BITS)); + h = ((val * 2654435761U) >> HASH_SLIDE); #define INSERT_STRING insert_string_c #define QUICK_INSERT_STRING quick_insert_string_c