summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2021-12-05 19:44:14 +0200
committerLars Wirzenius <liw@liw.fi>2021-12-05 19:44:14 +0200
commitf57152e112a55c1b821469cb911e2e16890585c6 (patch)
tree69c4ce2f854a07b101dcc5d6445a97cbbbe6ec79 /src
parent82968fdf4ae02ea6931b0166c519376127723e03 (diff)
downloadobnam-benchmark-f57152e112a55c1b821469cb911e2e16890585c6.tar.gz
feat: prepare for more measurements
Sponsored-by: author
Diffstat (limited to 'src')
-rw-r--r--src/result.rs29
-rw-r--r--src/step.rs8
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<Measurement>,
+ measurements: Vec<OpMeasurements>,
}
#[derive(Debug, Serialize)]
-pub struct Measurement {
+pub struct OpMeasurements {
benchmark: String,
op: Operation,
- ms: u128,
+ measurements: Vec<Measurement>,
+}
+
+#[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<String>) -> Result<Option<Measurement>, StepError> {
+ pub fn execute(&self, current: &mut Option<String>) -> Result<Option<OpMeasurements>, 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
};