]> git.ipfire.org Git - thirdparty/git.git/commit
diff: halt tree-diff early after max_changes
authorDerrick Stolee <dstolee@microsoft.com>
Mon, 30 Mar 2020 00:31:27 +0000 (00:31 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 30 Mar 2020 16:59:53 +0000 (09:59 -0700)
commite3696980163bdbd3bc56e5ffc69e8770015f366f
treecf50d1beba279fbfca4d628aa23de5defdbabe1d
parented591febb4a201ce48b34a4e90027414cd0d7966
diff: halt tree-diff early after max_changes

When computing the changed-paths bloom filters for the commit-graph,
we limit the size of the filter by restricting the number of paths
in the diff. Instead of computing a large diff and then ignoring the
result, it is better to halt the diff computation early.

Create a new "max_changes" option in struct diff_options. If non-zero,
then halt the diff computation after discovering strictly more changed
paths. This includes paths corresponding to trees that change.

Use this max_changes option in the bloom filter calculations. This
reduces the time taken to compute the filters for the Linux kernel
repo from 2m50s to 2m35s. On a large internal repository with ~500
commits that perform tree-wide changes, the time reduced from
6m15s to 3m48s.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Garima Singh <garima.singh@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
bloom.c
diff.h
tree-diff.c