From: Junio C Hamano Date: Sun, 30 Nov 2025 18:02:19 GMT Subject: Re: [PATCH v2] diff-index: don't queue unchanged filepairs with diff_change() Message-ID: In-Reply-To: René Scharfe writes: > Add a new streamlined function for queuing unchanged filepairs and > use it in show_modified(), which is called by diff_cache() via > oneway_diff() and do_oneway_diff(). It allocates only a single filespec > for each filepair and uses it twice with reference counting. This has a > measurable effect if there are a lot of them, like in the Linux repo: > > Benchmark 1: ./git_v2.52.0 -C ../linux diff --cached --find-copies-harder > Time (mean ± σ): 31.8 ms ± 0.2 ms [User: 24.2 ms, System: 6.3 ms] > Range (min … max): 31.5 ms … 32.3 ms 85 runs > > Benchmark 2: ./git -C ../linux diff --cached --find-copies-harder > Time (mean ± σ): 23.9 ms ± 0.2 ms [User: 18.1 ms, System: 4.6 ms] > Range (min … max): 23.5 ms … 24.4 ms 111 runs > > Summary > ./git -C ../linux diff --cached --find-copies-harder ran > 1.33 ± 0.01 times faster than ./git_v2.52.0 -C ../linux diff --cached --find-copies-harder Nice. Is this technique only applicable to diff-index among the three diff plumbing siblings? I suspect diff-files is an oddball in that on the working tree side we do not necessarily have the blob object names, but it would apply to diff-tree, wouldn't it? Will queue. Thanks.