Translate everything still using the old test harness to Criterion.
Motivation
Remove dependency on the (mostly deprecated) standard test harness. Enable usage of Criterion command-line arguments (which are otherwise intercepted by the Rust test harness).
Closes #1039.
Details
Mostly these are straightforward translations or simplifications (Criterion can benchmark ~1ns functions well enough so we don't need 1000 repetitions inside our benchmark functions).
Some I have added to benchmark groups. Some I have used shorter warmup/measurement durations since the defaults are quite conservative.
Many of the new results match up very well with those from the old test framework. Others don't; in particular the generators benchmarks (especially byte benches) are notably slower, but vaguely the same relative performance.
CHANGELOG.md
entrySummary
Translate everything still using the old test harness to Criterion.
Motivation
Remove dependency on the (mostly deprecated) standard test harness. Enable usage of Criterion command-line arguments (which are otherwise intercepted by the Rust test harness).
Closes #1039.
Details
Mostly these are straightforward translations or simplifications (Criterion can benchmark ~1ns functions well enough so we don't need 1000 repetitions inside our benchmark functions).
Some I have added to benchmark groups. Some I have used shorter warmup/measurement durations since the defaults are quite conservative.
Many of the new results match up very well with those from the old test framework. Others don't; in particular the
generators
benchmarks (especially byte benches) are notably slower, but vaguely the same relative performance.Old generators benchmark results
New generators benchmark results