From: Jeff Hostetler <jeffhost@xxxxxxxxxxxxx> Teach add_index_entry_with_check() and has_dir_name() to avoid index lookups if the given path sorts after the last entry in the index. This saves at least 2 binary searches per entry. This improves performance during checkout and read-tree because merge_working_tree() and unpack_trees() processes a list of already sorted entries. This helps performance on very large repositories. ================ Before and after numbers on index with 1M files. ./p0004-read-tree.sh 0004.2: read-tree (1003037) 3.24(2.46+0.72) 0004.3: switch branches (3038 1003037) 7.53(5.66+1.56) $ ./p0004-read-tree.sh 0004.2: read-tree (1003040) 2.45(1.79+0.61) 0004.3: switch branches (3041 1003040) 6.65(4.22+1.60) ================ Before and after numbers on index with 100K files. ./p0004-read-tree.sh 0004.2: read-tree (103037) 0.30(0.20+0.08) 0004.3: switch branches (3038 103037) 0.65(0.47+0.16) $ ./p0004-read-tree.sh 0004.2: read-tree (103040) 0.25(0.16+0.07) 0004.3: switch branches (3041 103040) 0.58(0.44+0.13) ================ Jeff Hostetler (4): p0004-read-tree: perf test to time read-tree read-cache: add strcmp_offset function test-strcmp-offset: created test for strcmp_offset read-cache: speed up add_index_entry during checkout Makefile | 1 + cache.h | 1 + read-cache.c | 73 ++++++++++++++++++++++++++++++++++++- t/helper/.gitignore | 1 + t/helper/test-strcmp-offset.c | 64 +++++++++++++++++++++++++++++++++ t/perf/p0004-read-tree.sh | 84 +++++++++++++++++++++++++++++++++++++++++++ t/t0065-strcmp-offset.sh | 11 ++++++ 7 files changed, 234 insertions(+), 1 deletion(-) create mode 100644 t/helper/test-strcmp-offset.c create mode 100755 t/perf/p0004-read-tree.sh create mode 100755 t/t0065-strcmp-offset.sh -- 2.9.3