Skip to content

Commit 801c562

Browse files
committed
stats from mangohud
1 parent 06d6a54 commit 801c562

2 files changed

Lines changed: 94 additions & 66 deletions

File tree

src/metrics/large_scenes.rs

Lines changed: 47 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -281,41 +281,55 @@ impl Metrics for LargeScene {
281281
let _ = reader.read_line(&mut tmp);
282282
let _ = reader.read_line(&mut tmp);
283283
let mut rdr = csv::ReaderBuilder::new().from_reader(reader);
284-
let frame_times = rdr
284+
let (frame_times, cpu, gpu, vram, ram): (
285+
Vec<f32>,
286+
Vec<f32>,
287+
Vec<f32>,
288+
Vec<f32>,
289+
Vec<f32>,
290+
) = rdr
285291
.records()
286292
.flatten()
287-
.flat_map(|record| record.get(1).unwrap().parse::<f32>())
288-
.collect::<Vec<_>>();
289-
290-
if !frame_times.len() > 3 {
291-
results.insert(
292-
format!("{key}.frame_time.mean"),
293-
(statistical::mean(&frame_times) * 1000.0) as u64,
294-
);
295-
results.insert(
296-
format!("{key}.frame_time.median"),
297-
(statistical::median(&frame_times) * 1000.0) as u64,
298-
);
299-
results.insert(
300-
format!("{key}.frame_time.min"),
301-
frame_times
302-
.iter()
303-
.map(|d| (d * 1000.0) as u64)
304-
.min()
305-
.unwrap(),
306-
);
307-
results.insert(
308-
format!("{key}.frame_time.max"),
309-
frame_times
310-
.iter()
311-
.map(|d| (d * 1000.0) as u64)
312-
.max()
313-
.unwrap(),
314-
);
315-
results.insert(
316-
format!("{key}.frame_time.std_dev"),
317-
(statistical::standard_deviation(&frame_times, None) * 1000.0) as u64,
318-
);
293+
.map(|record| {
294+
(
295+
record.get(1).unwrap().parse::<f32>().unwrap_or_default(),
296+
record.get(2).unwrap().parse::<f32>().unwrap_or_default(),
297+
record.get(3).unwrap().parse::<f32>().unwrap_or_default(),
298+
record.get(8).unwrap().parse::<f32>().unwrap_or_default(),
299+
record.get(10).unwrap().parse::<f32>().unwrap_or_default(),
300+
)
301+
})
302+
.collect();
303+
304+
for (values, name) in [
305+
(frame_times, "frame_time"),
306+
(cpu, "cpu_load"),
307+
(gpu, "gpu_load"),
308+
(ram, "ram_used"),
309+
(vram, "vram_used"),
310+
] {
311+
if values.len() > 3 {
312+
results.insert(
313+
format!("{key}.{name}.mean"),
314+
(statistical::mean(&values) * 1000.0) as u64,
315+
);
316+
results.insert(
317+
format!("{key}.{name}.median"),
318+
(statistical::median(&values) * 1000.0) as u64,
319+
);
320+
results.insert(
321+
format!("{key}.{name}.min"),
322+
values.iter().map(|d| (d * 1000.0) as u64).min().unwrap(),
323+
);
324+
results.insert(
325+
format!("{key}.{name}.max"),
326+
values.iter().map(|d| (d * 1000.0) as u64).max().unwrap(),
327+
);
328+
results.insert(
329+
format!("{key}.{name}.std_dev"),
330+
(statistical::standard_deviation(&values, None) * 1000.0) as u64,
331+
);
332+
}
319333
}
320334
}
321335

src/metrics/stress_tests.rs

Lines changed: 47 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -299,41 +299,55 @@ impl Metrics for StressTest {
299299
let _ = reader.read_line(&mut tmp);
300300
let _ = reader.read_line(&mut tmp);
301301
let mut rdr = csv::ReaderBuilder::new().from_reader(reader);
302-
let frame_times = rdr
302+
let (frame_times, cpu, gpu, vram, ram): (
303+
Vec<f32>,
304+
Vec<f32>,
305+
Vec<f32>,
306+
Vec<f32>,
307+
Vec<f32>,
308+
) = rdr
303309
.records()
304310
.flatten()
305-
.flat_map(|record| record.get(1).unwrap().parse::<f32>())
306-
.collect::<Vec<_>>();
307-
308-
if !frame_times.len() > 3 {
309-
results.insert(
310-
format!("{key}.frame_time.mean"),
311-
(statistical::mean(&frame_times) * 1000.0) as u64,
312-
);
313-
results.insert(
314-
format!("{key}.frame_time.median"),
315-
(statistical::median(&frame_times) * 1000.0) as u64,
316-
);
317-
results.insert(
318-
format!("{key}.frame_time.min"),
319-
frame_times
320-
.iter()
321-
.map(|d| (d * 1000.0) as u64)
322-
.min()
323-
.unwrap(),
324-
);
325-
results.insert(
326-
format!("{key}.frame_time.max"),
327-
frame_times
328-
.iter()
329-
.map(|d| (d * 1000.0) as u64)
330-
.max()
331-
.unwrap(),
332-
);
333-
results.insert(
334-
format!("{key}.frame_time.std_dev"),
335-
(statistical::standard_deviation(&frame_times, None) * 1000.0) as u64,
336-
);
311+
.map(|record| {
312+
(
313+
record.get(1).unwrap().parse::<f32>().unwrap_or_default(),
314+
record.get(2).unwrap().parse::<f32>().unwrap_or_default(),
315+
record.get(3).unwrap().parse::<f32>().unwrap_or_default(),
316+
record.get(8).unwrap().parse::<f32>().unwrap_or_default(),
317+
record.get(10).unwrap().parse::<f32>().unwrap_or_default(),
318+
)
319+
})
320+
.collect();
321+
322+
for (values, name) in [
323+
(frame_times, "frame_time"),
324+
(cpu, "cpu_load"),
325+
(gpu, "gpu_load"),
326+
(ram, "ram_used"),
327+
(vram, "vram_used"),
328+
] {
329+
if values.len() > 3 {
330+
results.insert(
331+
format!("{key}.{name}.mean"),
332+
(statistical::mean(&values) * 1000.0) as u64,
333+
);
334+
results.insert(
335+
format!("{key}.{name}.median"),
336+
(statistical::median(&values) * 1000.0) as u64,
337+
);
338+
results.insert(
339+
format!("{key}.{name}.min"),
340+
values.iter().map(|d| (d * 1000.0) as u64).min().unwrap(),
341+
);
342+
results.insert(
343+
format!("{key}.{name}.max"),
344+
values.iter().map(|d| (d * 1000.0) as u64).max().unwrap(),
345+
);
346+
results.insert(
347+
format!("{key}.{name}.std_dev"),
348+
(statistical::standard_deviation(&values, None) * 1000.0) as u64,
349+
);
350+
}
337351
}
338352
}
339353

0 commit comments

Comments
 (0)