more consistant quote handling

This commit is contained in:
Robin Appelman 2023-03-11 15:49:51 +01:00
commit acf70c03d4
11 changed files with 131 additions and 109 deletions

View file

@ -1,7 +1,8 @@
use chrono::NaiveDateTime;
use criterion::{black_box, criterion_group, criterion_main, Criterion};
use std::fs::read_to_string;
use std::time::Duration;
use tf_log_parser::{parse, GameEvent, LineSplit, RawEvent};
use tf_log_parser::{parse, EventHandler, GameEvent, LineSplit, LogHandler, RawEvent, SubjectMap};
pub fn parse_benchmark(c: &mut Criterion) {
let input = read_to_string("test_data/log_2892242.log").unwrap();
@ -34,8 +35,32 @@ pub fn parse_raw(c: &mut Criterion) {
});
}
pub fn handle_event(c: &mut Criterion) {
let input = read_to_string("test_data/log_2892242.log").unwrap();
let events: Vec<_> = input
.split("L ")
.filter(|line| !line.is_empty())
.flat_map(RawEvent::parse)
.map(|raw| (GameEvent::parse(&raw).unwrap(), raw))
.collect();
c.bench_function("handle events 2892242", |b| {
let mut handler = LogHandler::default();
let mut subjects =
SubjectMap::<<LogHandler as EventHandler>::PerSubjectData>::with_capacity(32);
let mut start_time: Option<NaiveDateTime> = None;
b.iter(|| {
black_box(&events)
.iter()
.flat_map(|(event, raw_event)| {
black_box(handler.process(&raw_event, &event, &mut start_time, &mut subjects))
})
.count();
})
});
}
criterion_group!(
name = benches;
config = Criterion::default().measurement_time(Duration::from_secs(10));
targets = parse_benchmark, parse_raw, parse_event);
targets = parse_benchmark, parse_raw, parse_event, handle_event);
criterion_main!(benches);