optimize line splitting

This commit is contained in:
Robin Appelman 2023-03-04 17:03:03 +01:00
commit 7bd667004b
3 changed files with 52 additions and 8 deletions

View file

@ -1,7 +1,7 @@
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, RawEvent};
use tf_log_parser::{parse, GameEvent, RawEvent, LineSplit};
pub fn parse_benchmark(c: &mut Criterion) {
let input = read_to_string("test_data/log_2892242.log").unwrap();
@ -26,8 +26,7 @@ pub fn parse_raw(c: &mut Criterion) {
let input = read_to_string("test_data/log_2892242.log").unwrap();
c.bench_function("parse raw 2892242", |b| {
b.iter(|| {
black_box(&input)
.split("L ")
LineSplit::new(black_box(&input))
.filter(|line| !line.is_empty())
.flat_map(RawEvent::parse)
.count();