summaryrefslogtreecommitdiff
path: root/t/perf
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2016-09-09 04:49:46 (GMT)
committerJunio C Hamano <gitster@pobox.com>2016-09-09 04:49:46 (GMT)
commitc4071eace94a7dca1cc0c0702fc0d4f23d2fc510 (patch)
treed394c5a3eed30d33092ca31c7a28c015af698776 /t/perf
parent6ebdac1bab966b720d776aa43ca188fe378b1f4b (diff)
parentc7df68cbca75232f7843a7d70c58a0e98decef91 (diff)
downloadgit-c4071eace94a7dca1cc0c0702fc0d4f23d2fc510.zip
git-c4071eace94a7dca1cc0c0702fc0d4f23d2fc510.tar.gz
git-c4071eace94a7dca1cc0c0702fc0d4f23d2fc510.tar.bz2
Merge branch 'jk/delta-base-cache'
The delta-base-cache mechanism has been a key to the performance in a repository with a tightly packed packfile, but it did not scale well even with a larger value of core.deltaBaseCacheLimit. * jk/delta-base-cache: t/perf: add basic perf tests for delta base cache delta_base_cache: use hashmap.h delta_base_cache: drop special treatment of blobs delta_base_cache: use list.h for LRU release_delta_base_cache: reuse existing detach function clear_delta_base_cache_entry: use a more descriptive name cache_or_unpack_entry: drop keep_cache parameter
Diffstat (limited to 't/perf')
-rwxr-xr-xt/perf/p0003-delta-base-cache.sh31
1 files changed, 31 insertions, 0 deletions
diff --git a/t/perf/p0003-delta-base-cache.sh b/t/perf/p0003-delta-base-cache.sh
new file mode 100755
index 0000000..62369ea
--- /dev/null
+++ b/t/perf/p0003-delta-base-cache.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+test_description='Test operations that emphasize the delta base cache.
+
+We look at both "log --raw", which should put only trees into the delta cache,
+and "log -Sfoo --raw", which should look at both trees and blobs.
+
+Any effects will be emphasized if the test repository is fully packed (loose
+objects obviously do not use the delta base cache at all). It is also
+emphasized if the pack has long delta chains (e.g., as produced by "gc
+--aggressive"), though cache is still quite noticeable even with the default
+depth of 50.
+
+The setting of core.deltaBaseCacheLimit in the source repository is also
+relevant (depending on the size of your test repo), so be sure it is consistent
+between runs.
+'
+. ./perf-lib.sh
+
+test_perf_large_repo
+
+# puts mostly trees into the delta base cache
+test_perf 'log --raw' '
+ git log --raw >/dev/null
+'
+
+test_perf 'log -S' '
+ git log --raw -Sfoo >/dev/null
+'
+
+test_done