From: Brian Downing Date: Thu, 12 Jul 2007 12:55:47 +0000 (-0500) Subject: Don't try to delta if target is much smaller than source X-Git-Tag: v1.5.3-rc1~11 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=a1dab41af4c575bb72231c73df26ecb2af4814d6;p=git.git Don't try to delta if target is much smaller than source Add a new try_delta heuristic. Don't bother trying to make a delta if the target object size is much smaller (currently 1/32) than the source, as it's very likely not going to get a match. Even if it does, you will have to read at least 32x the size of the new file to reassemble it, which isn't such a good deal. This leads to a considerable performance improvement when deltifying a mix of small and large files with a very large window, because you don't have to wait for the large files to percolate out of the window before things start going fast again. Signed-off-by: Brian Downing Acked-by: Nicolas Pitre Signed-off-by: Junio C Hamano --- diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c index b4f3e7c2e..54f304c11 100644 --- a/builtin-pack-objects.c +++ b/builtin-pack-objects.c @@ -1348,6 +1348,8 @@ static int try_delta(struct unpacked *trg, struct unpacked *src, sizediff = src_size < trg_size ? trg_size - src_size : 0; if (sizediff >= max_size) return 0; + if (trg_size < src_size / 32) + return 0; /* Load data if not already done */ if (!trg->data) {