mirror of
https://github.com/sharkdp/hyperfine.git
synced 2026-11-01 08:50:19 +00:00
Switch to unit-safe quantities
This commit is contained in:
1 parent
914d5cbc59
commit
f9aa299c0f
15 files changed
+399
-287
No files matched your search
+28
-37
@@ -4,6 +4,7 @@ use csv::WriterBuilder;
|
||||
|
||||
use super::Exporter;
|
||||
use crate::benchmark::benchmark_result::BenchmarkResult;
|
||||
use crate::benchmark::quantity::Second;
|
||||
use crate::options::SortOrder;
|
||||
use crate::quantity::{FormatQuantity, TimeUnit};
|
||||
|
||||
@@ -45,17 +46,14 @@ impl Exporter for CsvExporter {
|
||||
let mut fields = vec![Cow::Borrowed(res.command.as_bytes())];
|
||||
for f in &[
|
||||
res.mean_wall_clock_time(),
|
||||
res.measurements.stddev().unwrap_or(0.0),
|
||||
res.measurements.stddev().unwrap_or_default(),
|
||||
res.measurements.median(),
|
||||
res.measurements.user_mean(),
|
||||
res.measurements.system_mean(),
|
||||
res.measurements.min(),
|
||||
res.measurements.max(),
|
||||
] {
|
||||
fields.push(Cow::Owned(
|
||||
f.format_with_precision(CSV_UNIT, CSV_PRECISION)
|
||||
.into_bytes(),
|
||||
))
|
||||
fields.push(Cow::Owned(f.value_in::<Second>().to_string().into_bytes()))
|
||||
}
|
||||
for v in res.parameters.values() {
|
||||
fields.push(Cow::Borrowed(v.value.as_bytes()))
|
||||
@@ -67,20 +65,13 @@ impl Exporter for CsvExporter {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
use crate::benchmark::benchmark_result::Parameter;
|
||||
|
||||
#[cfg(test)]
|
||||
use crate::benchmark::measurement::{Measurement, Measurements};
|
||||
|
||||
#[test]
|
||||
fn test_csv() {
|
||||
use crate::benchmark::benchmark_result::Parameter;
|
||||
use crate::benchmark::measurement::{Measurement, Measurements};
|
||||
use crate::quantity::{byte, second, Information, Time, Zero};
|
||||
use crate::benchmark::quantity::{Byte, Second};
|
||||
|
||||
use std::collections::BTreeMap;
|
||||
use std::process::ExitStatus;
|
||||
|
||||
let exporter = CsvExporter::default();
|
||||
|
||||
@@ -89,24 +80,24 @@ fn test_csv() {
|
||||
command: String::from("command_a"),
|
||||
measurements: Measurements::new(vec![
|
||||
Measurement {
|
||||
wall_clock_time: 7.0,
|
||||
user_time: 7.0,
|
||||
system_time: 0.0,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(7.0),
|
||||
user_time: Second::new(7.0),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
Measurement {
|
||||
wall_clock_time: 8.0,
|
||||
user_time: 8.0,
|
||||
system_time: 0.0,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(8.0),
|
||||
user_time: Second::new(8.0),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
Measurement {
|
||||
wall_clock_time: 12.0,
|
||||
user_time: 12.0,
|
||||
system_time: 0.0,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(12.0),
|
||||
user_time: Second::new(12.0),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
]),
|
||||
@@ -133,24 +124,24 @@ fn test_csv() {
|
||||
command: String::from("command_b"),
|
||||
measurements: Measurements::new(vec![
|
||||
Measurement {
|
||||
wall_clock_time: 17.0,
|
||||
user_time: 17.0,
|
||||
system_time: 0.0,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(17.0),
|
||||
user_time: Second::new(17.0),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
Measurement {
|
||||
wall_clock_time: 18.0,
|
||||
user_time: 18.0,
|
||||
system_time: 0.0,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(18.0),
|
||||
user_time: Second::new(18.0),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
Measurement {
|
||||
wall_clock_time: 19.0,
|
||||
user_time: 19.0,
|
||||
system_time: 0.0,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(19.0),
|
||||
user_time: Second::new(19.0),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
]),
|
||||
|
||||
+97
-96
@@ -1,6 +1,7 @@
|
||||
use super::Exporter;
|
||||
use crate::benchmark::benchmark_result::BenchmarkResult;
|
||||
use crate::benchmark::measurement::{Measurement, Measurements};
|
||||
use crate::benchmark::quantity::{Byte, Second};
|
||||
use crate::export::asciidoc::AsciidocExporter;
|
||||
use crate::export::orgmode::OrgmodeExporter;
|
||||
use crate::quantity::{byte, second, Information, Time, TimeUnit, Zero};
|
||||
@@ -30,24 +31,24 @@ fn test_markup_export_auto_ms() {
|
||||
command: String::from("sleep 0.1"),
|
||||
measurements: Measurements::new(vec![
|
||||
Measurement {
|
||||
wall_clock_time: 0.09,
|
||||
user_time: 0.09,
|
||||
system_time: 0.,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(0.09),
|
||||
user_time: Second::new(0.09),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
Measurement {
|
||||
wall_clock_time: 0.10,
|
||||
user_time: 0.10,
|
||||
system_time: 0.,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(0.10),
|
||||
user_time: Second::new(0.10),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
Measurement {
|
||||
wall_clock_time: 0.14,
|
||||
user_time: 0.14,
|
||||
system_time: 0.,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(0.14),
|
||||
user_time: Second::new(0.14),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
]),
|
||||
@@ -57,24 +58,24 @@ fn test_markup_export_auto_ms() {
|
||||
command: String::from("sleep 2"),
|
||||
measurements: Measurements::new(vec![
|
||||
Measurement {
|
||||
wall_clock_time: 2.0,
|
||||
user_time: 2.0,
|
||||
system_time: 0.,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(2.0),
|
||||
user_time: Second::new(2.0),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
Measurement {
|
||||
wall_clock_time: 3.0,
|
||||
user_time: 3.0,
|
||||
system_time: 0.,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(3.0),
|
||||
user_time: Second::new(3.0),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
Measurement {
|
||||
wall_clock_time: 4.0,
|
||||
user_time: 4.0,
|
||||
system_time: 0.,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(4.0),
|
||||
user_time: Second::new(4.0),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
]),
|
||||
@@ -129,24 +130,24 @@ fn test_markup_export_auto_s() {
|
||||
command: String::from("sleep 2"),
|
||||
measurements: Measurements::new(vec![
|
||||
Measurement {
|
||||
wall_clock_time: 2.1,
|
||||
user_time: 2.1,
|
||||
system_time: 0.,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(2.1),
|
||||
user_time: Second::new(2.1),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
Measurement {
|
||||
wall_clock_time: 2.2,
|
||||
user_time: 2.2,
|
||||
system_time: 0.,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(2.2),
|
||||
user_time: Second::new(2.2),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
Measurement {
|
||||
wall_clock_time: 2.3,
|
||||
user_time: 2.3,
|
||||
system_time: 0.,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(2.3),
|
||||
user_time: Second::new(2.3),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
]),
|
||||
@@ -156,24 +157,24 @@ fn test_markup_export_auto_s() {
|
||||
command: String::from("sleep 0.1"),
|
||||
measurements: Measurements::new(vec![
|
||||
Measurement {
|
||||
wall_clock_time: 0.1,
|
||||
user_time: 0.1,
|
||||
system_time: 0.,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(0.1),
|
||||
user_time: Second::new(0.1),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
Measurement {
|
||||
wall_clock_time: 0.2,
|
||||
user_time: 0.2,
|
||||
system_time: 0.,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(0.2),
|
||||
user_time: Second::new(0.2),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
Measurement {
|
||||
wall_clock_time: 0.3,
|
||||
user_time: 0.3,
|
||||
system_time: 0.,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(0.3),
|
||||
user_time: Second::new(0.3),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
]),
|
||||
@@ -228,24 +229,24 @@ fn test_markup_export_manual_ms() {
|
||||
command: String::from("sleep 2"),
|
||||
measurements: Measurements::new(vec![
|
||||
Measurement {
|
||||
wall_clock_time: 2.1,
|
||||
user_time: 2.1,
|
||||
system_time: 0.,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(2.1),
|
||||
user_time: Second::new(2.1),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
Measurement {
|
||||
wall_clock_time: 2.2,
|
||||
user_time: 2.2,
|
||||
system_time: 0.,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(2.2),
|
||||
user_time: Second::new(2.2),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
Measurement {
|
||||
wall_clock_time: 2.3,
|
||||
user_time: 2.3,
|
||||
system_time: 0.,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(2.3),
|
||||
user_time: Second::new(2.3),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
]),
|
||||
@@ -255,24 +256,24 @@ fn test_markup_export_manual_ms() {
|
||||
command: String::from("sleep 0.1"),
|
||||
measurements: Measurements::new(vec![
|
||||
Measurement {
|
||||
wall_clock_time: 0.1,
|
||||
user_time: 0.1,
|
||||
system_time: 0.,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(0.1),
|
||||
user_time: Second::new(0.1),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
Measurement {
|
||||
wall_clock_time: 0.2,
|
||||
user_time: 0.2,
|
||||
system_time: 0.,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(0.2),
|
||||
user_time: Second::new(0.2),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
Measurement {
|
||||
wall_clock_time: 0.3,
|
||||
user_time: 0.3,
|
||||
system_time: 0.,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(0.3),
|
||||
user_time: Second::new(0.3),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
]),
|
||||
@@ -326,24 +327,24 @@ fn test_markup_export_manual_s() {
|
||||
command: String::from("sleep 2"),
|
||||
measurements: Measurements::new(vec![
|
||||
Measurement {
|
||||
wall_clock_time: 2.01,
|
||||
user_time: 2.01,
|
||||
system_time: 0.,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(2.01),
|
||||
user_time: Second::new(2.01),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
Measurement {
|
||||
wall_clock_time: 2.02,
|
||||
user_time: 2.02,
|
||||
system_time: 0.,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(2.02),
|
||||
user_time: Second::new(2.02),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
Measurement {
|
||||
wall_clock_time: 2.03,
|
||||
user_time: 2.03,
|
||||
system_time: 0.,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(2.03),
|
||||
user_time: Second::new(2.03),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
]),
|
||||
@@ -353,24 +354,24 @@ fn test_markup_export_manual_s() {
|
||||
command: String::from("sleep 0.1"),
|
||||
measurements: Measurements::new(vec![
|
||||
Measurement {
|
||||
wall_clock_time: 0.11,
|
||||
user_time: 0.11,
|
||||
system_time: 0.,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(0.11),
|
||||
user_time: Second::new(0.11),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
Measurement {
|
||||
wall_clock_time: 0.12,
|
||||
user_time: 0.12,
|
||||
system_time: 0.,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(0.12),
|
||||
user_time: Second::new(0.12),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
Measurement {
|
||||
wall_clock_time: 0.13,
|
||||
user_time: 0.13,
|
||||
system_time: 0.,
|
||||
memory_usage_byte: 1024,
|
||||
wall_clock_time: Second::new(0.13),
|
||||
user_time: Second::new(0.13),
|
||||
system_time: Second::zero(),
|
||||
memory_usage_byte: Byte::new(1024),
|
||||
exit_code: Some(0),
|
||||
},
|
||||
]),
|
||||
|
||||
Reference in new issue
Block a user