basic version

This commit is contained in:
timeshifter
2026-07-09 13:53:21 +02:00
parent d07ee3cbe9
commit f5eddd6edf
3 changed files with 44 additions and 1 deletions
+1
View File
@@ -1,3 +1,4 @@
/target /target
measurements.txt measurements.txt
flamegraph.svg flamegraph.svg
perf.data
+1
View File
@@ -2,6 +2,7 @@
name = "brc" name = "brc"
version = "0.1.0" version = "0.1.0"
edition = "2024" edition = "2024"
default-run = "brc"
[dependencies] [dependencies]
rand_distr = "*" rand_distr = "*"
+42 -1
View File
@@ -1,3 +1,44 @@
use std::{collections::HashMap, io::BufRead};
fn main() { fn main() {
println!("Hello, world!"); let file = std::io::BufReader::new(std::fs::File::open("measurements.txt").unwrap());
let mut data = HashMap::new();
for result in file.lines() {
let line = result.unwrap();
let (station, value) = line.split_once(';').unwrap();
let station = station.to_string();
let parsed: f64 = value.parse().unwrap();
data.entry(station)
.and_modify(|values: &mut (f64, f64, usize, f64)| {
values.0 = values.0.min(parsed);
values.1 += parsed;
values.2 += 1;
values.3 = values.3.max(parsed);
})
.or_insert((parsed, parsed, 1_usize, parsed));
}
let mut stations: Vec<_> = data.keys().collect();
stations.sort();
print!("{{");
let mut iter = stations.into_iter().peekable();
while let Some(s) = iter.next() {
let entry = data.get(s).unwrap();
print!(
"{s}={:.1}/{:.1}/{:.1}",
entry.0,
entry.1 / (entry.2 as f64),
entry.3
);
if iter.peek().is_some() {
print!(", ");
}
}
println!("}}");
} }