Code

sha1-lookup: make selection of 'middle' less aggressive
authorJunio C Hamano <gitster@pobox.com>
Sun, 30 Dec 2007 11:13:27 +0000 (03:13 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 9 Apr 2008 08:30:18 +0000 (01:30 -0700)
commit12ecb01107c4e77d3bccb5be5a0230c4546dafaf
tree022b8c212b7bd7cbd5bd7636f9d8ab8f04646960
parent628522ec1439f414dcb1e71e300eb84a37ad1af9
sha1-lookup: make selection of 'middle' less aggressive

If we pick 'mi' between 'lo' and 'hi' at 50%, which was what the
simple binary search did, we are halving the search space
whether the entry at 'mi' is lower or higher than the target.

The previous patch was about picking not the middle but closer
to 'hi', when we know the target is a lot closer to 'hi' than it
is to 'lo'.  However, if it turns out that the entry at 'mi' is
higher than the target, we would end up reducing the search
space only by the difference between 'mi' and 'hi' (which by
definition is less than 50% --- that was the whole point of not
using the simple binary search), which made the search less
efficient.  And the risk of overshooting becomes very high, if
we try to be too precise.

This tweaks the selection of 'mi' to be a bit closer to the
middle than we would otherwise pick to avoid the problem.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
sha1-lookup.c