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
This commit is contained in:
31
t/perf/p0003-delta-base-cache.sh
Executable file
31
t/perf/p0003-delta-base-cache.sh
Executable file
@ -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
|
Reference in New Issue
Block a user