summaryrefslogtreecommitdiff
path: root/cache.h
diff options
context:
space:
mode:
authorJeff Hostetler <jeffhost@microsoft.com>2017-03-23 13:47:04 (GMT)
committerJunio C Hamano <gitster@pobox.com>2017-03-24 18:00:03 (GMT)
commitea194895326d10f6e255eee05ac25ab5ae096dd9 (patch)
treeb7860eb144bd3205fd94bec32bb12a5d6dc06889 /cache.h
parent846df809bc671d6487fa2be7550e3ed2b62e62f9 (diff)
downloadgit-ea194895326d10f6e255eee05ac25ab5ae096dd9.zip
git-ea194895326d10f6e255eee05ac25ab5ae096dd9.tar.gz
git-ea194895326d10f6e255eee05ac25ab5ae096dd9.tar.bz2
name-hash: add test-lazy-init-name-hash
Add t/helper/test-lazy-init-name-hash.c test code to demonstrate performance times for lazy_init_name_hash() using the original single-threaded and the new multi-threaded code paths. Includes a --dump option to dump the created hashmaps to stdout. You can use this to run both code paths and confirm that they generate the same hashmaps. Includes a --analyze option to analyze performance of both code paths over a range of index sizes to help you find a lower bound for the LAZY_THREAD_COST in name-hash.c. For example, passing "-a 4000" will set "istate.cache_nr" to 4000 and then try the multi-threaded code -- probably giving 2 threads with 2000 entries each. It will then run both the single-threaded (1x4000) and the multi-threaded (2x2000) and compare the times. It will then repeat the test with 8000, 12000, and etc. so that you can see the cross over. Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'cache.h')
-rw-r--r--cache.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/cache.h b/cache.h
index 5c035da..6556fbb 100644
--- a/cache.h
+++ b/cache.h
@@ -343,6 +343,7 @@ struct index_state {
extern struct index_state the_index;
/* Name hashing */
+extern int test_lazy_init_name_hash(struct index_state *istate, int try_threaded);
extern void add_name_hash(struct index_state *istate, struct cache_entry *ce);
extern void remove_name_hash(struct index_state *istate, struct cache_entry *ce);
extern void free_name_hash(struct index_state *istate);