Documentation
¶
Overview ¶
Command abbench runs two Go test binaries alternately, base then head, for N rounds with the same arguments, and appends each run's stdout to <out>/base.txt and <out>/head.txt, so that
benchstat base.txt head.txt
compares them. It exists because two benchmarks run one after the other measure the host's load drift as much as the code: a neighbour starting a job between the two blocks shows up as a regression. Alternating the runs spreads the drift over both sides.
abbench --base ./b.test --head ./h.test --rounds 8 --cpu 5 -- \
-test.run '^$' -test.bench 'X' -test.count 1
It is pure Go with no cgo, so it cross-compiles for every GOOS/GOARCH and is copied to the remote benchmark hosts like hostload.
⛔ A child that fails STOPS the run. A benchmark series with a hole in it is not a smaller series, it is a biased one, and benchstat would compare it without a word. The binary, the round and the child's stderr are printed and the status is 1.
The binaries are executed directly from an argv, never through a shell.