attempt to speed up the deltification for big files
commit2633cf30b7cd97910764fc4c016df7959858171d
authorOmar Polo <op@omarpolo.com>
Mon, 26 Feb 2024 16:25:15 +0000 (26 16:25 +0000)
committerThomas Adam <thomas@xteddy.org>
Sat, 2 Mar 2024 00:19:56 +0000 (2 00:19 +0000)
tree98485655db2e51a083c87d53c79a07edfe1f8362
parent54e38878133e773338308e227bc839a2515f14ba
attempt to speed up the deltification for big files

The current hash table perform poorly on big files due to a small
resize step that pushes the table to its limits continuously.
Instead, to have both a better performing hash table and keep the
memory consumption low, save the blocks in an array and use the
hash table as index.  Then, use a more generous resizing scheme
that guarantees the good properties of the hash table.

To avoid having to rebuild the table when the array is resized,
save the indexes in the table, and to further reduce the memory
consumption use 32 bit indices.  On amd64 this means that each slot
is 4 bytes instead of 8 for a pointer or 24 for a struct
got_deltify_block.

ok stsp@
lib/deltify.c
lib/got_lib_deltify.h