basic version
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
/target
|
/target
|
||||||
measurements.txt
|
measurements.txt
|
||||||
flamegraph.svg
|
flamegraph.svg
|
||||||
|
perf.data
|
||||||
|
|||||||
@@ -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
@@ -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!("}}");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user