Skip to content

package:bench_press v0.2.0

Choose a tag to compare

@kevmoo kevmoo released this 03 Sep 03:57
· 44 commits to main since this release
f1b2fdf
  • Added multi-tier Cartesian comparison matrix support (Issue #5) via unified bench_press.yaml configuration manifest, --config, and --dry-run inspection flag.
  • Added N-dimensional coordinates: Map<String, String> mapping to BenchmarkEntry telemetry schema, replacing the single-axis group property.
  • Added MarkdownReporter.renderMatrixComparisonTable to render multidimensional matrix reports with grouped left-hand dimension columns and Fieller 95% ratio confidence intervals.
  • Extracted mathematical and calibration constants (Lanczos, Acklam, and BenchmarkCalibrator thresholds) with detailed doc comments.
  • Removed legacy transitional --compare-sdk option in favor of unified Cartesian matrix configurations in bench_press.yaml.
  • Added positional argument support (<baseline> [current]) to bench_press diff alongside --baseline (-b) and --current (-c).
  • Added Blackhole.consumeString and Blackhole.consumeObject overloads with @pragma('dart2js:never-inline') compiler barriers.
  • Added maxSemRelativeError option (default 0.03) to BenchmarkConfig for steady-state warmup convergence.
  • Added BenchmarkEntry.copyWith method and updated BenchmarkEntry.key to include optional group ($name:$target:$group) with deterministic name/target ordering in BenchmarkSuiteResult.deepMerge.
  • Updated BenchmarkSuiteResult.groups to return group names in order of appearance rather than sorted alphabetically.
  • Aligned default targetBatchDuration to 100ms across CLI runners and BenchmarkConfig.
  • Unified default benchmark discovery directories across run and validate commands (benchmark, benchmarks, bench).
  • Simplified benchmark discovery to convention-based matching (targeting files ending in *_benchmark.dart or *_bench.dart) requiring standard void main() entrypoints, eliminating ad-hoc regex content parsing and dynamic wrapper script generation.
  • Updated benchmark discovery to default strictly to benchmark/ (or benchmarks/, bench/) and throw explicit errors (FormatException for non-Dart files, PathNotFoundException for nonexistent paths) rather than silently ignoring files or walking the entire repository root.
  • Removed BenchmarkFileKind enum and dynamic wrapper script generation.
  • Removed deprecated KbssdWarmupDetector alias in favor of AdaptiveWarmupDetector.
  • 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 BenchmarkCalibrator to support sub-10µs operations without throwing CalibrationException, while throwing CalibrationException by default when maximum probe batches produce zero elapsed ticks (elapsedUs == 0) unless forceRun: true (--force-run) is specified (which warns and continues).
  • Added mode ('sync' vs 'async') property to BenchmarkResult (which BenchmarkEntry.fromResult now inherits for JSON telemetry).
  • Implemented continuous Student's t-distribution quantile calculation (regularized incomplete beta for 1 < df < 2 and Hill's Algorithm 396 for df > 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.compute to return isValid: false (with NaN bounds) when sample size is degenerate (N < 2).