summaryrefslogtreecommitdiff
path: root/diffcore-delta.c
diff options
context:
space:
mode:
Diffstat (limited to 'diffcore-delta.c')
-rw-r--r--diffcore-delta.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/diffcore-delta.c b/diffcore-delta.c
index f8a7518..835d82c 100644
--- a/diffcore-delta.c
+++ b/diffcore-delta.c
@@ -26,12 +26,19 @@
/* Wild guess at the initial hash size */
#define INITIAL_HASH_SIZE 9
-#define HASHBASE 65537 /* next_prime(2^16) */
+
/* We leave more room in smaller hash but do not let it
* grow to have unused hole too much.
*/
#define INITIAL_FREE(sz_log2) ((1<<(sz_log2))*(sz_log2-3)/(sz_log2))
+/* A prime rather carefully chosen between 2^16..2^17, so that
+ * HASHBASE < INITIAL_FREE(17). We want to keep the maximum hashtable
+ * size under the current 2<<17 maximum, which can hold this many
+ * different values before overflowing to hashtable of size 2<<18.
+ */
+#define HASHBASE 107927
+
struct spanhash {
unsigned long hashval;
unsigned long cnt;