git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/6] thread lazy_init_name_hash
@ 2017-03-22 17:14 git
  2017-03-22 17:14 ` [PATCH 1/6] name-hash: specify initial size for istate.dir_hash table git
                   ` (8 more replies)
  0 siblings, 9 replies; 14+ messages in thread
From: git @ 2017-03-22 17:14 UTC (permalink / raw)
  To: git; +Cc: gitster, peff, Jeff Hostetler

From: Jeff Hostetler <jeffhost@microsoft.com>

This patch series is a performance optimization for
lazy_init_name_hash() in name-hash.c on very large
repositories.

This change allows lazy_init_name_hash() to optionally
use multiple threads when building the the_index.dir_hash
and the_index.name_hash hashmaps.  The original code path
has been preserved and is used when the repo is small or
the system does not have sufficient CPUs.

A helper command (t/helper/test-lazy-init-name-hash) was
created to demonstrate performance differences and validate
output.  For example, use the '-p' option to compare both
code paths on a large repo.

During our testing on the Windows source tree (3.1M
files, 500K folders, 450MB index), this change reduced
the runtime of lazy_init_name_hash() from 1.4 to 0.27
seconds.

This patch series replaces my earlier
     * jh/memihash-opt (2017-02-17) 5 commits
patch series.

Jeff Hostetler (6):
  name-hash: specify initial size for istate.dir_hash table
  hashmap: allow memihash computation to be continued
  hashmap: Add disallow_rehash setting
  name-hash: perf improvement for lazy_init_name_hash
  name-hash: add test-lazy-init-name-hash
  name-hash: add perf test for lazy_init_name_hash

 Makefile                            |   1 +
 cache.h                             |   1 +
 hashmap.c                           |  29 ++-
 hashmap.h                           |  25 ++
 name-hash.c                         | 490 +++++++++++++++++++++++++++++++++++-
 t/helper/test-lazy-init-name-hash.c | 264 +++++++++++++++++++
 t/perf/p0004-lazy-init-name-hash.sh |  19 ++
 7 files changed, 820 insertions(+), 9 deletions(-)
 create mode 100644 t/helper/test-lazy-init-name-hash.c
 create mode 100644 t/perf/p0004-lazy-init-name-hash.sh

-- 
2.7.4


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2017-03-22 21:30 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-03-22 17:14 [PATCH 0/6] thread lazy_init_name_hash git
2017-03-22 17:14 ` [PATCH 1/6] name-hash: specify initial size for istate.dir_hash table git
2017-03-22 17:14 ` [PATCH 2/6] hashmap: allow memihash computation to be continued git
2017-03-22 17:14 ` [PATCH 3/6] hashmap: Add disallow_rehash setting git
2017-03-22 17:14 ` [PATCH 4/6] name-hash: perf improvement for lazy_init_name_hash git
2017-03-22 17:14 ` [PATCH 5/6] name-hash: add test-lazy-init-name-hash git
2017-03-22 17:14 ` [PATCH 6/6] name-hash: add perf test for lazy_init_name_hash git
2017-03-22 18:02 ` [PATCH 0/6] thread lazy_init_name_hash Stefan Beller
2017-03-22 19:22   ` Jeff Hostetler
2017-03-22 19:38 ` Junio C Hamano
2017-03-22 20:54   ` Junio C Hamano
2017-03-22 21:04     ` Jeff Hostetler
2017-03-22 21:29       ` Junio C Hamano
2017-03-22 20:39 ` Junio C Hamano

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).