git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 3/5] p0004: use test_perf

From
René Scharfe <l.s.r@web.de>
Date
May 13, 2017, 16:02 UTC
Message-ID
<5d8cff82-c695-ea6a-4d82-448dc10b8b63@web.de>
In-Reply-To
<9b574d73-8dfb-f0b3-dc3e-d593726a8f0e@web.de>

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>
---
The numbers are just guesses; I didn't actually test all ranges.
 t/perf/p0004-lazy-init-name-hash.sh | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)
diff --git a/t/perf/p0004-lazy-init-name-hash.sh b/t/perf/p0004-lazy-init-name-hash.sh
index 576bdc3c4e..d30c32f97b 100755
--- a/t/perf/p0004-lazy-init-name-hash.sh
+++ b/t/perf/p0004-lazy-init-name-hash.sh
@@ -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
-- 
2.12.2
Previous: René ScharfeNext: René Scharfe
Message 4 of 7 in “p0004: support being called by t/perf/run”
  1. 0/5 p0004: support being called by t/perf/runRené Scharfe, May 13, 2017
  2. 1/5 p0004: simplify calls of test-lazy-init-name-hashRené Scharfe, May 13, 2017
  3. 2/5 p0004: avoid using pipesRené Scharfe, May 13, 2017
  4. 3/5 p0004: use test_perfRené Scharfe, May 13, 2017
  5. 4/5 p0004: don't abort if multi-threaded is too slowRené Scharfe, May 13, 2017
  6. 5/5 p0004: don't error out if test repo is too smallRené Scharfe, May 13, 2017
  7. Jeff HostetlerMay 15, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.