From f57152e112a55c1b821469cb911e2e16890585c6 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sun, 5 Dec 2021 19:44:14 +0200 Subject: feat: prepare for more measurements Sponsored-by: author --- src/result.rs | 29 ++++++++++++++++++++++------- src/step.rs | 8 +++++--- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/result.rs b/src/result.rs index cb23d35..3a73079 100644 --- a/src/result.rs +++ b/src/result.rs @@ -2,14 +2,21 @@ use serde::Serialize; #[derive(Debug, Default, Serialize)] pub struct Result { - measurements: Vec, + measurements: Vec, } #[derive(Debug, Serialize)] -pub struct Measurement { +pub struct OpMeasurements { benchmark: String, op: Operation, - ms: u128, + measurements: Vec, +} + +#[derive(Debug, Serialize)] +pub enum Measurement { + TotalFiles(u64), + TotalData(u64), + DurationMs(u128), } #[derive(Debug, Clone, Copy, Serialize)] @@ -19,14 +26,22 @@ pub enum Operation { } impl Result { - pub fn push(&mut self, m: Measurement) { + pub fn push(&mut self, m: OpMeasurements) { self.measurements.push(m); } } -impl Measurement { - pub fn new(benchmark: &str, op: Operation, ms: u128) -> Self { +impl OpMeasurements { + pub fn new(benchmark: &str, op: Operation) -> Self { let benchmark = benchmark.to_string(); - Self { benchmark, op, ms } + Self { + benchmark, + op, + measurements: vec![], + } + } + + pub fn push(&mut self, m: Measurement) { + self.measurements.push(m); } } diff --git a/src/step.rs b/src/step.rs index 0ca7729..1142765 100644 --- a/src/step.rs +++ b/src/step.rs @@ -1,4 +1,4 @@ -use crate::result::{Measurement, Operation}; +use crate::result::{OpMeasurements, Operation, Measurement}; use crate::specification::{Change, Create, FileCount}; use std::time::Instant; @@ -50,7 +50,7 @@ impl Step { } } - pub fn execute(&self, current: &mut Option) -> Result, StepError> { + pub fn execute(&self, current: &mut Option) -> Result, StepError> { let now = Instant::now(); let op = match self { Self::Start(name) => { @@ -92,7 +92,9 @@ impl Step { let ms = now.elapsed().as_millis(); assert!(current.is_some()); let current = current.as_ref().unwrap(); - Some(Measurement::new(current, op, ms)) + let mut om = OpMeasurements::new(current, op); + om.push(Measurement::DurationMs(ms)); + Some(om) } else { None }; -- cgit v1.2.1