p0004: use test_perf
authorRené Scharfe <l.s.r@web.de>
Sat, 13 May 2017 16:02:32 +0000 (18:02 +0200)
committerJunio C Hamano <gitster@pobox.com>
Tue, 16 May 2017 02:11:48 +0000 (11:11 +0900)
The perf test suite (more specifically: t/perf/aggregate.perl) requires
each test script to write test results into a file, otherwise it aborts
when aggregating. Add actual performance tests with test_perf to allow
p0004 to be run together with other perf scripts.

Calibrate the value for the parameter --count based on the size of the
test repository, in order to get meaningful results with smaller repos
yet still be able to finish the script against huge ones without having
to wait for hours.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Acked-by: Jeff Hostetler <git@jeffhostetler.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/perf/p0004-lazy-init-name-hash.sh
index 576bdc3c4e7e94277f769ece3a0f6b654e79f41a..d30c32f97b3bdbe1464e307e8bea26adb4a5c2cc 100755 (executable)
@@ -18,4 +18,40 @@ test_expect_success 'multithreaded should be faster' '
        test-lazy-init-name-hash --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 "multi-threaded, $desc" "
+       test-lazy-init-name-hash --multi --count=$count
+"
+
 test_done