diff --git a/.sqlx/query-0a4a3c4090e70ca643c4af0368ecf5c8dde66d898a900afa299a94e9a7bc62f8.json b/.sqlx/query-185c3516e116876f1783f25ffeb179ca6ecb4f9a001a48127516a81b7a50062a.json similarity index 52% rename from .sqlx/query-0a4a3c4090e70ca643c4af0368ecf5c8dde66d898a900afa299a94e9a7bc62f8.json rename to .sqlx/query-185c3516e116876f1783f25ffeb179ca6ecb4f9a001a48127516a81b7a50062a.json index 14ab8ed..5eeadaa 100644 --- a/.sqlx/query-0a4a3c4090e70ca643c4af0368ecf5c8dde66d898a900afa299a94e9a7bc62f8.json +++ b/.sqlx/query-185c3516e116876f1783f25ffeb179ca6ecb4f9a001a48127516a81b7a50062a.json @@ -1,6 +1,6 @@ { "db_name": "SQLite", - "query": "SELECT metric, value, stddev, unit, direction FROM run_measurements WHERE id = ? ORDER BY metric ASC ", + "query": "SELECT metric, value, unit FROM run_measurements WHERE id = ? ORDER BY metric ASC ", "describe": { "columns": [ { @@ -13,20 +13,10 @@ "ordinal": 1, "type_info": "Float" }, - { - "name": "stddev", - "ordinal": 2, - "type_info": "Float" - }, { "name": "unit", - "ordinal": 3, + "ordinal": 2, "type_info": "Text" - }, - { - "name": "direction", - "ordinal": 4, - "type_info": "Int64" } ], "parameters": { @@ -35,10 +25,8 @@ "nullable": [ false, false, - true, - true, true ] }, - "hash": "0a4a3c4090e70ca643c4af0368ecf5c8dde66d898a900afa299a94e9a7bc62f8" + "hash": "185c3516e116876f1783f25ffeb179ca6ecb4f9a001a48127516a81b7a50062a" } diff --git a/.sqlx/query-8fa4d1546e559bca47e2fb765ee33b989271492395b43c1887db7d490d9dff8d.json b/.sqlx/query-8fa4d1546e559bca47e2fb765ee33b989271492395b43c1887db7d490d9dff8d.json new file mode 100644 index 0000000..98bf81e --- /dev/null +++ b/.sqlx/query-8fa4d1546e559bca47e2fb765ee33b989271492395b43c1887db7d490d9dff8d.json @@ -0,0 +1,12 @@ +{ + "db_name": "SQLite", + "query": "INSERT INTO run_measurements ( id, metric, value, unit ) VALUES (?, ?, ?, ?) ", + "describe": { + "columns": [], + "parameters": { + "Right": 4 + }, + "nullable": [] + }, + "hash": "8fa4d1546e559bca47e2fb765ee33b989271492395b43c1887db7d490d9dff8d" +} diff --git a/.sqlx/query-971b811933eb0ab6ae4f23d6179f7035be88c7134b05118c20b106f10d299fe9.json b/.sqlx/query-971b811933eb0ab6ae4f23d6179f7035be88c7134b05118c20b106f10d299fe9.json deleted file mode 100644 index fb926a0..0000000 --- a/.sqlx/query-971b811933eb0ab6ae4f23d6179f7035be88c7134b05118c20b106f10d299fe9.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO run_measurements ( id, metric, value, stddev, unit, direction ) VALUES (?, ?, ?, ?, ?, ?) ", - "describe": { - "columns": [], - "parameters": { - "Right": 6 - }, - "nullable": [] - }, - "hash": "971b811933eb0ab6ae4f23d6179f7035be88c7134b05118c20b106f10d299fe9" -} diff --git a/meta/import_velcom_data b/meta/import_velcom_data index 0df7944..85040c2 100755 --- a/meta/import_velcom_data +++ b/meta/import_velcom_data @@ -6,14 +6,9 @@ import json import math import re import sqlite3 +import statistics import urllib.request -DIRECTION = { - "LESS_IS_BETTER": -1, - "NEUTRAL": 0, - "MORE_IS_BETTER": 1, -} - def format_time(time): # If the fractional part of the second is not exactly 3 or 6 digits long, @@ -31,15 +26,6 @@ def format_time(time): return time.isoformat() -def stddev(values): - if len(values) < 2: - return None - N = len(values) - mean = sum(values) / N - variance = sum(pow(value - mean, 2) for value in values) / (N - 1) - return math.sqrt(variance) - - def get_run_data(con, run_id): ( runner_name, @@ -73,7 +59,6 @@ def get_run_data(con, run_id): benchmark, metric, unit, - interpretation, error, ) in con.execute( """ @@ -82,7 +67,6 @@ def get_run_data(con, run_id): benchmark, metric, unit, - interpretation, error FROM measurement WHERE run_id = ? @@ -101,10 +85,8 @@ def get_run_data(con, run_id): values = [value for (value,) in values] measurements[f"{metric}/{benchmark}"] = { - "value": sum(values), - "stddev": stddev(values), + "value": statistics.mean(values), "unit": unit, - "direction": DIRECTION.get(interpretation), } if error_type: diff --git a/migrations/20230815165523_init.sql b/migrations/20230815165523_init.sql index 8715c06..42f7254 100644 --- a/migrations/20230815165523_init.sql +++ b/migrations/20230815165523_init.sql @@ -43,9 +43,7 @@ CREATE TABLE run_measurements ( id TEXT NOT NULL, metric TEXT NOT NULL, value REAL NOT NULL, - stddev REAL, unit TEXT, - direction INT, PRIMARY KEY (id, metric), FOREIGN KEY (id) REFERENCES runs (id) ON DELETE CASCADE diff --git a/src/server/web/api/worker.rs b/src/server/web/api/worker.rs index cef9089..6840f87 100644 --- a/src/server/web/api/worker.rs +++ b/src/server/web/api/worker.rs @@ -81,18 +81,14 @@ async fn save_work( id, \ metric, \ value, \ - stddev, \ - unit, \ - direction \ + unit \ ) \ - VALUES (?, ?, ?, ?, ?, ?) \ + VALUES (?, ?, ?, ?) \ ", run.id, metric, measurement.value, - measurement.stddev, measurement.unit, - measurement.direction, ) .execute(&mut *conn) .await?; diff --git a/src/server/web/pages/run.rs b/src/server/web/pages/run.rs index 5e6980b..c5e321d 100644 --- a/src/server/web/pages/run.rs +++ b/src/server/web/pages/run.rs @@ -23,9 +23,7 @@ use crate::{ struct Measurement { metric: String, value: String, - stddev: String, unit: String, - direction: &'static str, } struct Line { @@ -83,9 +81,7 @@ async fn from_finished_run( SELECT \ metric, \ value, \ - stddev, \ - unit, \ - direction \ + unit \ FROM run_measurements \ WHERE id = ? \ ORDER BY metric ASC \ @@ -96,14 +92,7 @@ async fn from_finished_run( .map_ok(|r| Measurement { metric: r.metric, value: util::format_value(r.value), - stddev: r.stddev.map(util::format_value).unwrap_or_default(), unit: r.unit.unwrap_or_default(), - direction: match r.direction { - Some(..=-1) => "less is better", - Some(0) => "neutral", - Some(1..) => "more is better", - None => "", - }, }) .try_collect::>() .await?; diff --git a/src/shared.rs b/src/shared.rs index c669862..3300b41 100644 --- a/src/shared.rs +++ b/src/shared.rs @@ -55,14 +55,8 @@ pub enum Direction { pub struct Measurement { pub value: f64, - #[serde(skip_serializing_if = "Option::is_none")] - pub stddev: Option, - #[serde(skip_serializing_if = "Option::is_none")] pub unit: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub direction: Option, } #[derive(Clone, Serialize, Deserialize)] diff --git a/src/worker/run/internal.rs b/src/worker/run/internal.rs index 2e58ee0..98e60e2 100644 --- a/src/worker/run/internal.rs +++ b/src/worker/run/internal.rs @@ -8,11 +8,7 @@ use std::{ use regex::RegexBuilder; use walkdir::WalkDir; -use crate::{ - shared::{Direction, Measurement}, - somehow, - worker::server::Server, -}; +use crate::{shared::Measurement, somehow, worker::server::Server}; use super::{Finished, RunInProgress}; @@ -110,70 +106,47 @@ fn count(path: &Path) -> somehow::Result { Ok(counts) } -fn measurement(value: f64, direction: Direction) -> Measurement { - Measurement { - value, - stddev: None, - unit: None, - direction: Some(direction), - } +fn measurement(value: f64) -> Measurement { + Measurement { value, unit: None } } fn measurements(counts: Counts) -> HashMap { let mut measurements = HashMap::new(); // Files - measurements.insert( - "files".to_string(), - measurement(counts.files as f64, Direction::Neutral), - ); + measurements.insert("files".to_string(), measurement(counts.files as f64)); for (ext, count) in counts.files_by_ext { measurements.insert( format!("files/by extension/{ext}"), - measurement(count as f64, Direction::Neutral), + measurement(count as f64), ); } for (dir, count) in counts.files_by_dir { - measurements.insert( - format!("files/by dir/{dir}/"), - measurement(count as f64, Direction::Neutral), - ); + measurements.insert(format!("files/by dir/{dir}/"), measurement(count as f64)); } // Lines - measurements.insert( - "lines".to_string(), - measurement(counts.lines as f64, Direction::Neutral), - ); + measurements.insert("lines".to_string(), measurement(counts.lines as f64)); for (ext, count) in counts.lines_by_ext { measurements.insert( format!("lines/by extension/{ext}"), - measurement(count as f64, Direction::Neutral), + measurement(count as f64), ); } for (dir, count) in counts.lines_by_dir { - measurements.insert( - format!("lines/by dir/{dir}/"), - measurement(count as f64, Direction::Neutral), - ); + measurements.insert(format!("lines/by dir/{dir}/"), measurement(count as f64)); } // Todos - measurements.insert( - "todos".to_string(), - measurement(counts.todos as f64, Direction::LessIsBetter), - ); + measurements.insert("todos".to_string(), measurement(counts.todos as f64)); for (ext, count) in counts.todos_by_ext { measurements.insert( format!("todos/by extension/{ext}"), - measurement(count as f64, Direction::LessIsBetter), + measurement(count as f64), ); } for (dir, count) in counts.todos_by_dir { - measurements.insert( - format!("todos/by dir/{dir}/"), - measurement(count as f64, Direction::LessIsBetter), - ); + measurements.insert(format!("todos/by dir/{dir}/"), measurement(count as f64)); } measurements diff --git a/templates/pages/run_finished.html b/templates/pages/run_finished.html index 535a1e1..1773157 100644 --- a/templates/pages/run_finished.html +++ b/templates/pages/run_finished.html @@ -36,9 +36,7 @@ metric value - stddev unit - direction @@ -46,9 +44,7 @@ {{ mm.metric }} {{ mm.value }} - {{ mm.stddev }} {{ mm.unit }} - {{ mm.direction }} {% endfor %}