xdiff: drop XDL_FAST_HASH
commit1f7c9261320576fcaaa5b4e50ad73336b17183e8
authorJeff King <peff@peff.net>
Thu, 1 Dec 2016 04:52:43 +0000 (30 23:52 -0500)
committerJunio C Hamano <gitster@pobox.com>
Tue, 6 Dec 2016 21:27:11 +0000 (6 13:27 -0800)
tree358c866f7964837cd50c059184a9735d08553a78
parent8d7a455ed52e2a96debc080dfc011b6bb00db5d2
xdiff: drop XDL_FAST_HASH

The xdiff code hashes every line of both sides of a diff,
and then compares those hashes to find duplicates. The
overall performance depends both on how fast we can compute
the hashes, but also on how many hash collisions we see.

The idea of XDL_FAST_HASH is to speed up the hash
computation. But the generated hashes have worse collision
behavior. This means that in some cases it speeds diffs up
(running "git log -p" on git.git improves by ~8% with it),
but in others it can slow things down. One pathological case
saw over a 100x slowdown[1].

There may be a better hash function that covers both
properties, but in the meantime we are better off with the
original hash. It's slightly slower in the common case, but
it has fewer surprising pathological cases.

[1] http://public-inbox.org/git/20141222041944.GA441@peff.net/

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Makefile
config.mak.uname
xdiff/xutils.c