bench_press 0.2.0
bench_press: ^0.2.0 copied to clipboard
A modern, statistically sound, compiler-aware multi-runtime benchmarking framework for Dart and Flutter.
0.2.0 #
-
Added multi-tier Cartesian comparison matrix support (Issue #5) via unified
bench_press.yamlconfiguration manifest,--config, and--dry-runinspection flag. -
Added N-dimensional
coordinates: Map<String, String>mapping toBenchmarkEntrytelemetry schema, replacing the single-axisgroupproperty. -
Added
MarkdownReporter.renderMatrixComparisonTableto render multidimensional matrix reports with grouped left-hand dimension columns and Fieller 95% ratio confidence intervals. -
Extracted mathematical and calibration constants (
Lanczos,Acklam, andBenchmarkCalibratorthresholds) with detailed doc comments. -
Removed legacy transitional
--compare-sdkoption in favor of unified Cartesian matrix configurations inbench_press.yaml. -
Added positional argument support (
<baseline> [current]) tobench_press diffalongside--baseline(-b) and--current(-c). -
Added
Blackhole.consumeStringandBlackhole.consumeObjectoverloads with@pragma('dart2js:never-inline')compiler barriers. -
Added
maxSemRelativeErroroption (default0.03) toBenchmarkConfigfor steady-state warmup convergence. -
Added
BenchmarkEntry.copyWithmethod and updatedBenchmarkEntry.keyto include optionalgroup($name:$target:$group) with deterministic name/target ordering inBenchmarkSuiteResult.deepMerge. -
Updated
BenchmarkSuiteResult.groupsto return group names in order of appearance rather than sorted alphabetically. -
Aligned default
targetBatchDurationto100msacross CLI runners andBenchmarkConfig. -
Unified default benchmark discovery directories across
runandvalidatecommands (benchmark,benchmarks,bench). -
Simplified benchmark discovery to convention-based matching (targeting files ending in
*_benchmark.dartor*_bench.dart) requiring standardvoid main()entrypoints, eliminating ad-hoc regex content parsing and dynamic wrapper script generation. -
Updated benchmark discovery to default strictly to
benchmark/(orbenchmarks/,bench/) and throw explicit errors (FormatExceptionfor non-Dart files,PathNotFoundExceptionfor nonexistent paths) rather than silently ignoring files or walking the entire repository root. -
Removed
BenchmarkFileKindenum and dynamic wrapper script generation. -
Removed deprecated
KbssdWarmupDetectoralias in favor ofAdaptiveWarmupDetector. -
Fixed steady-state warmup convergence math using Standard Error of the Mean (SEM) relative error (
<= 3%) and stationarity checks. -
Hardened
Blackhole.drain()compiler barrier against whole-program Dead-Store Elimination across AOT, Wasm, and JavaScript. -
Fixed
BenchmarkCalibratorto support sub-10µs operations without throwingCalibrationException, while throwingCalibrationExceptionby default when maximum probe batches produce zero elapsed ticks (elapsedUs == 0) unlessforceRun: true(--force-run) is specified (which warns and continues). -
Added
mode('sync'vs'async') property toBenchmarkResult(whichBenchmarkEntry.fromResultnow inherits for JSON telemetry). -
Implemented continuous Student's t-distribution quantile calculation (regularized incomplete beta for
1 < df < 2and Hill's Algorithm 396 fordf > 2) for accurate Fieller confidence intervals across all degrees of freedom. -
Fixed unhandled exception propagation in Isolate execution mode (
BenchmarkProcessRunner). -
Prevented floating-point overflow in geometric mean speedup reporting via log-sum calculation.
-
Updated
FiellerInterval.computeto returnisValid: false(withNaNbounds) when sample size is degenerate (N < 2).
0.1.0 #
- Initial release of
bench_press: A modern, statistically sound, compiler-aware multi-runtime benchmarking framework for Dart and Flutter. - Multi-runtime execution support across JIT, AOT (
dart compile exe), WasmGC (dart compile wasm), and JavaScript (dart compile js). Benchmark,AsyncBenchmark,BenchmarkVariant, andBenchmarkGroupharnesses with lifecycle hooks (setup,run,teardown).Blackholedead-code elimination (DCE) sink to safely consume benchmark results without compiler dead-code stripping.Throughputmetric tracking for byte rates (B/s,KB/s,MB/s,GB/s) and element rates (items/s,records/s,tokens/s).- Automated batch calibration and steady-state warmup convergence detection.
- Statistical summary metrics (Mean, Median, Min, Max, StdDev, CV, p95, p99, Ops/sec) with Fieller 95% confidence intervals for variant ratios.
- Markdown reporting with side-by-side variant comparisons and before/after baseline diffing.
bench_pressCLI withrun,validate,report, anddiffsubcommands.