From 75d16c22394bffcf616b631faff622b598709133 Mon Sep 17 00:00:00 2001 From: David Peter Date: Tue, 6 Oct 2026 15:19:54 +0200 Subject: [PATCH] More improvements --- README.md | 2 +- src/metric.rs | 24 ++++++++++++------------ tests/integration_tests.rs | 10 +++++----- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index f93fbb2..a29210a 100644 --- a/README.md +++ b/README.md @@ -244,7 +244,7 @@ You can use the `--export-markdown ` option to create tables like the foll | Command | Mean Wall Time [s] | Change | Factor | |:---|---:|---:|:---| | `find . -iregex '.*[0-9]\.jpg$'` | 2.275 ± 0.046 | | | -| `find . -iname '*[0-9].jpg'` | 1.427 ± 0.026 | -37.3% | | +| `find . -iname '*[0-9].jpg'` | 1.427 ± 0.026 | -37.3% | (1.6x faster) | | `fd -HI '.*[0-9]\.jpg$'` | 0.232 ± 0.002 | -89.8% | (9.8x faster) | #### JSON diff --git a/src/metric.rs b/src/metric.rs index 22a954d..894b37c 100644 --- a/src/metric.rs +++ b/src/metric.rs @@ -349,7 +349,7 @@ impl Stats { pub fn format_factor_from(&self, reference: &Self, metric: Metric) -> String { if reference.mean > 0.0 - && (self.mean >= 2.0 * reference.mean || self.mean <= reference.mean / 2.0) + && (self.mean >= 1.3 * reference.mean || self.mean <= 0.7 * reference.mean) { let decrease = self.mean < reference.mean; let factor = if decrease { @@ -384,20 +384,20 @@ mod tests { fn large_changes_include_factors() { let reference = Stats { count: 1, - mean: 12.0, + mean: 100.0, stddev: None, - median: 12.0, - min: 12.0, - max: 12.0, + median: 100.0, + min: 100.0, + max: 100.0, }; for (mean, metric, expected) in [ - (24.0, Metric::TimeWallClock, "+100.0% (2.0x slower)"), - (6.0, Metric::TimeCpu, "-50.0% (2.0x faster)"), - (1.2, Metric::Instructions, "-90.0% (10.0x less)"), - (120.0, Metric::MemoryPeakResident, "+900.0% (10.0x more)"), - (23.9, Metric::TimeWallClock, "+99.2%"), - (6.1, Metric::Instructions, "-49.2%"), - (12.0, Metric::Instructions, "0.0%"), + (130.0, Metric::TimeWallClock, "+30.0% (1.3x slower)"), + (70.0, Metric::TimeCpu, "-30.0% (1.4x faster)"), + (10.0, Metric::Instructions, "-90.0% (10.0x less)"), + (1000.0, Metric::MemoryPeakResident, "+900.0% (10.0x more)"), + (129.99, Metric::TimeWallClock, "+30.0%"), + (70.01, Metric::Instructions, "-30.0%"), + (100.0, Metric::Instructions, "0.0%"), (0.0, Metric::Instructions, "-100.0% (∞x less)"), ] { let stats = Stats { mean, ..reference }; diff --git a/tests/integration_tests.rs b/tests/integration_tests.rs index 0f63c4e..307a82a 100644 --- a/tests/integration_tests.rs +++ b/tests/integration_tests.rs @@ -783,7 +783,7 @@ fn shows_benchmark_comparison_relative_to_reference() { Benchmark 3: sleep 3.0 (10 runs) mean ± σ min … max - Wall Time 3.000 s ± 0.000 s 3.000 s … 3.000 s +50.0% + Wall Time 3.000 s ± 0.000 s 3.000 s … 3.000 s +50.0% (1.5x slower) Memory 0.0 B ± 0.0 B 0.0 B … 0.0 B N/A @@ -824,7 +824,7 @@ fn comparison_and_markup_identify_first_command_as_reference() { | `baseline` | 2.000 | | | | `sleep 1` | 1.000 | -50.0% | (2.0x faster) | | `sleep 2` | 2.000 | 0.0% | | - | `sleep 3` | 3.000 | +50.0% | | + | `sleep 3` | 3.000 | +50.0% | (1.5x slower) | "); // Equal zero times have no meaningful relative factor. @@ -873,7 +873,7 @@ fn shows_name_of_first_command() { Benchmark 3: sleep 3.0 (10 runs) mean ± σ min … max - Wall Time 3.000 s ± 0.000 s 3.000 s … 3.000 s +50.0% + Wall Time 3.000 s ± 0.000 s 3.000 s … 3.000 s +50.0% (1.5x slower) Memory 0.0 B ± 0.0 B 0.0 B … 0.0 B N/A @@ -909,12 +909,12 @@ fn performs_all_benchmarks_in_parameter_scan() { Benchmark 3: sleep 40 (10 runs) mean ± σ min … max - Wall Time 40.000 s ± 0.000 s 40.000 s … 40.000 s +33.3% + Wall Time 40.000 s ± 0.000 s 40.000 s … 40.000 s +33.3% (1.3x slower) Memory 0.0 B ± 0.0 B 0.0 B … 0.0 B N/A Benchmark 4: sleep 45 (10 runs) mean ± σ min … max - Wall Time 45.000 s ± 0.000 s 45.000 s … 45.000 s +50.0% + Wall Time 45.000 s ± 0.000 s 45.000 s … 45.000 s +50.0% (1.5x slower) Memory 0.0 B ± 0.0 B 0.0 B … 0.0 B N/A