Repository navigation
pr-2301/spkrka/test-tool-genbytes-v1
tagged this
07 Nov 14:59
While looking for slow tests in CI, t4205 stood out on macOS: its EXPENSIVE tests take several times longer there than on Linux. A CI experiment showed that much of the time was spent in tr(1), which is very slow on macOS for the 2GB of data that t4205 generates. Patch 1 renames test-genzeros.c so that the actual changes in patch 2 show up as a regular diff. Patch 2 adds "genbytes" and uses it instead of "genzeros | tr", which is where the speedup comes from. Open question: is patch 3 wanted? It folds "genzeros" into "genbytes", spelling the NUL byte as "NUL", so that there is a single command. Alternatively, we could drop it and keep "genzeros" as a thin wrapper, avoiding changes to its 10 call sites. I kept patch 3 separate so that it is easy to drop, but it could also be squashed into patch 2. Some other decisions that may be worth pointing out: * The buffer is no longer static: it used to be static so that it was zero-initialized for free, but now that it is filled with the requested byte on every call, a local buffer avoids shared state. It keeps its size of 256KB. Smaller buffers made no measurable difference in my tests, but there was no reason to change it. * Invalid counts are still silently treated as 0, as before. That could be tightened, but it is unrelated to this series. Kristofer Karlsson (3): t/helper: rename test-genzeros.c to test-genbytes.c t: add "test-tool genbytes" to avoid slow tr(1) on macOS t: replace "test-tool genzeros" with "genbytes NUL" Makefile | 2 +- t/helper/meson.build | 2 +- t/helper/test-genbytes.c | 64 +++++++++++++++++++++++++++++++ t/helper/test-genzeros.c | 37 ------------------ t/helper/test-tool.c | 2 +- t/helper/test-tool.h | 2 +- t/t0613-reftable-write-options.sh | 2 +- t/t1007-hash-object.sh | 8 ++-- t/t1051-large-conversion.sh | 4 +- t/t1450-fsck.sh | 4 +- t/t4141-apply-too-large.sh | 2 +- t/t4205-log-pretty-formats.sh | 2 +- t/t5300-pack-object.sh | 6 +-- t/t5318-commit-graph.sh | 2 +- t/t7006-pager.sh | 3 +- t/t9850-shell.sh | 2 +- 16 files changed, 85 insertions(+), 59 deletions(-) create mode 100644 t/helper/test-genbytes.c delete mode 100644 t/helper/test-genzeros.c base-commit: fb255012acbcbe81189cb8014da0280b09c66ecc Submitted-As: https://lore.kernel.org/git/pull.2301.git.1794063565.gitgitgadget@gmail.com