Choose prose comparison and ratio in one match

This commit is contained in:
David Peter committed 2026-10-05 14:46:46 +02:00
1 parent 7167df6951
commit 06167908cb
1 file changed
+21 -24
+21 -24
View File
@@ -97,38 +97,35 @@ impl<'a> Scheduler<'a> {
for item in others {
// The prose summary expresses both directions as factors above one.
let (relative_speed, relative_speed_stddev) =
if item.relative_ordering == Ordering::Less {
(
1.0 / item.relative_speed,
let (relative_speed, relative_speed_stddev, prefix, suffix) =
match item.relative_ordering {
Ordering::Less => (
format!("{:8.2}", 1.0 / item.relative_speed),
item.relative_speed_stddev
.map(|stddev| stddev / item.relative_speed.powi(2)),
)
} else {
(item.relative_speed, item.relative_speed_stddev)
"",
" times slower than",
),
Ordering::Greater => (
format!("{:8.2}", item.relative_speed),
item.relative_speed_stddev,
"",
" times faster than",
),
Ordering::Equal => (
format!("{:.2}", item.relative_speed),
item.relative_speed_stddev,
" As fast (",
") as",
),
};
let stddev = if let Some(stddev) = relative_speed_stddev {
format!(" ± {}", format!("{:.2}", stddev).green())
} else {
"".into()
};
let comparator = match item.relative_ordering {
Ordering::Less => format!(
"{}{} times slower than",
format!("{relative_speed:8.2}").bold().green(),
stddev
),
Ordering::Greater => format!(
"{}{} times faster than",
format!("{relative_speed:8.2}").bold().green(),
stddev
),
Ordering::Equal => format!(
" As fast ({}{}) as",
format!("{relative_speed:.2}").bold().green(),
stddev
),
};
let comparator =
format!("{prefix}{}{stddev}{suffix}", relative_speed.bold().green());
console_writeln!(
stdout,
"{} {}",