From 8a258857149e9e937b1dddafe8e95a84dadd78c5 Mon Sep 17 00:00:00 2001 From: sharkdp Date: Tue, 20 Mar 2018 22:24:57 +0100 Subject: [PATCH] Export list of runtimes to JSON --- src/hyperfine/benchmark.rs | 1 + src/hyperfine/export/csv.rs | 28 ++++++++++++++++++++++++++-- src/hyperfine/export/mod.rs | 5 +++++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/hyperfine/benchmark.rs b/src/hyperfine/benchmark.rs index f5b18c8..7113a32 100644 --- a/src/hyperfine/benchmark.rs +++ b/src/hyperfine/benchmark.rs @@ -302,5 +302,6 @@ pub fn run_benchmark( system_mean, t_min, t_max, + times_real, )) } diff --git a/src/hyperfine/export/csv.rs b/src/hyperfine/export/csv.rs index f9c83db..6b70808 100644 --- a/src/hyperfine/export/csv.rs +++ b/src/hyperfine/export/csv.rs @@ -1,8 +1,24 @@ use super::{ExportEntry, Exporter}; -use csv::WriterBuilder; use std::io::{Error, ErrorKind, Result}; +use csv::WriterBuilder; + +use hyperfine::internal::Second; + +/// Set of values that will be exported. +#[derive(Debug, Serialize)] +pub struct CsvEntry { + command: String, + mean: Second, + stddev: Second, + user: Second, + system: Second, + min: Second, + max: Second, +} + + #[derive(Default)] pub struct CsvExporter {} @@ -10,7 +26,15 @@ impl Exporter for CsvExporter { fn serialize(&self, results: &Vec) -> Result> { let mut writer = WriterBuilder::new().from_writer(vec![]); for res in results { - writer.serialize(res)?; + writer.serialize(&CsvEntry { + command: res.command.clone(), + mean: res.mean, + stddev: res.stddev, + user: res.user, + system: res.system, + min: res.min, + max: res.max, + })?; } writer diff --git a/src/hyperfine/export/mod.rs b/src/hyperfine/export/mod.rs index 183ac2f..91344a4 100644 --- a/src/hyperfine/export/mod.rs +++ b/src/hyperfine/export/mod.rs @@ -34,6 +34,9 @@ pub struct ExportEntry { /// Max time measured max: Second, + + /// All run time measurements + times: Vec, } impl ExportEntry { @@ -46,6 +49,7 @@ impl ExportEntry { system: Second, min: Second, max: Second, + times: Vec, ) -> Self { ExportEntry { command, @@ -55,6 +59,7 @@ impl ExportEntry { system, min, max, + times, } } }