summaryrefslogtreecommitdiff
path: root/t/perf
diff options
context:
space:
mode:
authorVictoria Dye <vdye@github.com>2022-11-10 19:06:03 +0000
committerTaylor Blau <me@ttaylorr.com>2022-11-10 21:49:34 -0500
commit0e47bca0f7592f8053ffcc530d8afa1d2e364563 (patch)
tree3b9f052368b9ec903211b02b0fb08fca58957497 /t/perf
parent68fcd48bafa1ef51b1ba40a41cb0fcdbad7acce1 (diff)
downloadgit-0e47bca0f7592f8053ffcc530d8afa1d2e364563.tar.gz
reset: use 'skip_cache_tree_update' option
Enable the 'skip_cache_tree_update' option in the variants that call 'prime_cache_tree()' after 'unpack_trees()' (specifically, 'git reset --mixed' and 'git reset --hard'). This avoids redundantly rebuilding the cache tree in both 'cache_tree_update()' at the end of 'unpack_trees()' and in 'prime_cache_tree()', resulting in a small (but consistent) performance improvement. From the newly-added 'p7102-reset.sh' test: Test before after -------------------------------------------------------------------- 7102.1: reset --hard (...) 2.11(0.40+1.54) 1.97(0.38+1.47) -6.6% Signed-off-by: Victoria Dye <vdye@github.com> Signed-off-by: Taylor Blau <me@ttaylorr.com>
Diffstat (limited to 't/perf')
-rwxr-xr-xt/perf/p7102-reset.sh21
1 files changed, 21 insertions, 0 deletions
diff --git a/t/perf/p7102-reset.sh b/t/perf/p7102-reset.sh
new file mode 100755
index 0000000000..9b039e8691
--- /dev/null
+++ b/t/perf/p7102-reset.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+test_description='performance of reset'
+. ./perf-lib.sh
+
+test_perf_default_repo
+test_checkout_worktree
+
+test_perf 'reset --hard with change in tree' '
+ base=$(git rev-parse HEAD) &&
+ test_commit --no-tag A &&
+ new=$(git rev-parse HEAD) &&
+
+ for i in $(test_seq 10)
+ do
+ git reset --hard $new &&
+ git reset --hard $base || return $?
+ done
+'
+
+test_done