Merge branch 'ew/fd-cloexec-fix' into maint
[gitweb.git] / t / perf / p0004-lazy-init-name-hash.sh
index 5afa8c8df3b4dd9f6bae4b1f46351f9ed04fa566..8de5a98cfc6c513bb35cd8355f3e831ab3a8007d 100755 (executable)
@@ -7,13 +7,50 @@ test_perf_large_repo
 test_checkout_worktree
 
 test_expect_success 'verify both methods build the same hashmaps' '
-       $GIT_BUILD_DIR/t/helper/test-lazy-init-name-hash$X --dump --single | sort >out.single &&
-       $GIT_BUILD_DIR/t/helper/test-lazy-init-name-hash$X --dump --multi  | sort >out.multi  &&
-       test_cmp out.single out.multi
+       test-lazy-init-name-hash --dump --single >out.single &&
+       if test-lazy-init-name-hash --dump --multi >out.multi
+       then
+               test_set_prereq REPO_BIG_ENOUGH_FOR_MULTI &&
+               sort <out.single >sorted.single &&
+               sort <out.multi >sorted.multi &&
+               test_cmp sorted.single sorted.multi
+       fi
 '
 
-test_expect_success 'multithreaded should be faster' '
-       $GIT_BUILD_DIR/t/helper/test-lazy-init-name-hash$X --perf >out.perf
+test_expect_success 'calibrate' '
+       entries=$(wc -l <out.single) &&
+
+       case $entries in
+       ?) count=1000000 ;;
+       ??) count=100000 ;;
+       ???) count=10000 ;;
+       ????) count=1000 ;;
+       ?????) count=100 ;;
+       ??????) count=10 ;;
+       *) count=1 ;;
+       esac &&
+       export count &&
+
+       case $entries in
+       1) entries_desc="1 entry" ;;
+       *) entries_desc="$entries entries" ;;
+       esac &&
+
+       case $count in
+       1) count_desc="1 round" ;;
+       *) count_desc="$count rounds" ;;
+       esac &&
+
+       desc="$entries_desc, $count_desc" &&
+       export desc
 '
 
+test_perf "single-threaded, $desc" "
+       test-lazy-init-name-hash --single --count=$count
+"
+
+test_perf REPO_BIG_ENOUGH_FOR_MULTI "multi-threaded, $desc" "
+       test-lazy-init-name-hash --multi --count=$count
+"
+
 test_done