diff options
author | Shuqi Liang <cheskaqiqi@gmail.com> | 2023-05-09 15:42:41 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2023-05-09 14:26:36 -0700 |
commit | 8c30be9176784b5e4fbfc2ca6e8275c13cbf6e4a (patch) | |
tree | c955b48e5eb93a80a7f29b3b24b1c5ce44968cac /t/perf | |
parent | 0aba1a989c7c577dc1b0b096a12615b7a6747c54 (diff) | |
download | git-8c30be9176784b5e4fbfc2ca6e8275c13cbf6e4a.tar.gz |
diff-files: integrate with sparse index
Remove full index requirement for `git diff-files`. Refactor the
ensure_expanded and ensure_not_expanded functions by introducing a
common helper function, ensure_index_state. Add test to ensure the index
is no expanded in `git diff-files`.
The `p2000` tests demonstrate a ~96% execution time reduction for 'git
diff-files' and a ~97% execution time reduction for 'git diff-files'
for a file using a sparse index:
Test before after
-----------------------------------------------------------------------
2000.94: git diff-files (full-v3) 0.09 0.08 -11.1%
2000.95: git diff-files (full-v4) 0.09 0.09 +0.0%
2000.96: git diff-files (sparse-v3) 0.52 0.02 -96.2%
2000.97: git diff-files (sparse-v4) 0.51 0.02 -96.1%
2000.98: git diff-files -- f2/f4/a (full-v3) 0.06 0.07 +16.7%
2000.99: git diff-files -- f2/f4/a (full-v4) 0.08 0.08 +0.0%
2000.100: git diff-files -- f2/f4/a (sparse-v3) 0.46 0.01 -97.8%
2000.101: git diff-files -- f2/f4/a (sparse-v4) 0.51 0.02 -96.1%
Signed-off-by: Shuqi Liang <cheskaqiqi@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/perf')
-rwxr-xr-x | t/perf/p2000-sparse-operations.sh | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/t/perf/p2000-sparse-operations.sh b/t/perf/p2000-sparse-operations.sh index 60d1de0662..901cc493ef 100755 --- a/t/perf/p2000-sparse-operations.sh +++ b/t/perf/p2000-sparse-operations.sh @@ -129,5 +129,7 @@ test_perf_on_all git grep --cached bogus -- "f2/f1/f1/*" test_perf_on_all git write-tree test_perf_on_all git describe --dirty test_perf_on_all 'echo >>new && git describe --dirty' +test_perf_on_all git diff-files +test_perf_on_all git diff-files -- $SPARSE_CONE/a test_done |