in aws-lc-rs/util/process-criterion-csv.rs [288:329]
fn main() {
let cli = Cli::parse();
let mut ring_results: HashMap<String, Stats> = HashMap::new();
let mut aws_results: HashMap<String, Stats> = HashMap::new();
let contents = fs::read_to_string(&cli.csv_file)
.expect(&format!("Unable to open file: '{:?}'", &cli.csv_file));
for line in contents.lines() {
if line.starts_with("group") {
continue;
}
let components: Vec<&str> = line.split(",").collect();
assert_eq!(8, components.len());
let test = components[0].trim();
let lib = components[1].trim();
let time = f64::from_str(components[5]).expect(&format!("Unable to parse time: {}", line));
let iter = u32::from_str(components[7])
.expect(&format!("Unable to parse iteration count: {}", line));
let avg = time.div(iter as f64);
match lib {
"AWS-LC" => insert_result(test, avg, &mut aws_results),
"Ring" => insert_result(test, avg, &mut ring_results),
_ => panic!("Unrecognized library: {}", lib),
}
}
let mut test_keys: Vec<&String> = aws_results.keys().collect();
test_keys.sort_by(|a, b| numerical_string_compare(a, b));
let mut handle = io::stdout().lock();
writeln!(handle, "Test{}", cli.header_line()).unwrap();
for test in test_keys {
let aws_stats = aws_results.get(test.as_str()).unwrap().finalize();
let ring_stats = ring_results.get(test.as_str()).unwrap().finalize();
write!(handle, "{}", test).unwrap();
write!(handle, "{}", cli.data_line(&aws_stats, &ring_stats)).unwrap();
writeln!(handle, "").unwrap();
}
drop(handle);
}