basic version
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
/target
|
||||
measurements.txt
|
||||
flamegraph.svg
|
||||
perf.data
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
name = "brc"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
default-run = "brc"
|
||||
|
||||
[dependencies]
|
||||
rand_distr = "*"
|
||||
|
||||
+42
-1
@@ -1,3 +1,44 @@
|
||||
use std::{collections::HashMap, io::BufRead};
|
||||
|
||||
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