Log Message: |
Speed up txdelta for non-deltifyable sections. This alone speeds up
the commit of a 1GB random data file form 28s to 14s.
The idea is to use a fixed-length bit array that tell us whether we
_might_ have a match for a given checksum. In contrast to the iterative,
multi-level check in find_match, this pre-check is very fast and highly
predictable.
* subversion/libsvn_delta/xdelta.c
(FLAGS_COUNT): Define a new array size constant.
(blocks): Add the FLAGS array.
(hash_flags): New, separate hash function for FLAGS.
(add_block): Populate / update FLAGS as well.
(init_blocks_table): Initialize FLAGS.
(compute_delta): Add a tight loop skipping non-matching sections;
continue with normal lookup when there might be match.
|