Skip to content

Commit 56e60a1

Browse files
committed
Use memchr-based splitting instead of an iterator/event-based interface
1 parent 8a3162d commit 56e60a1

File tree

4 files changed

+179
-175
lines changed

4 files changed

+179
-175
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ testing = []
1010

1111
[dependencies]
1212
include_dir = "0.7.3"
13+
memchr = "2.7.4"
1314
memmap2 = "0.9.4"
1415
rand = "0.8.5"
1516
rusqlite = { version = "0.31.0", features = ["bundled", "limits"] }

core/benches/pyreport.rs

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::collections::HashMap;
1+
use std::{collections::HashMap, hint::black_box};
22

33
use codecov_rs::{
44
parsers::pyreport::{chunks, chunks_serde, report_json},
@@ -125,21 +125,11 @@ fn complex_chunks_serde(bencher: Bencher) {
125125
}
126126

127127
fn parse_chunks_file_serde(input: &[u8]) {
128-
let mut parser = chunks_serde::Parser::new(input);
129-
loop {
130-
// TODO: these are just for debugging
131-
let rest = parser.rest;
132-
let expecting = parser.expecting;
133-
let event = parser.next();
134-
match event {
135-
Ok(None) => break,
136-
Ok(Some(_)) => {}
137-
Err(err) => {
138-
let rest = std::str::from_utf8(rest).unwrap();
139-
let rest = rest.get(..32).unwrap_or(rest);
140-
dbg!(rest, expecting);
141-
panic!("{err}");
142-
}
128+
let chunks_file = chunks_serde::ChunksFile::new(input).unwrap();
129+
let mut chunks = chunks_file.chunks();
130+
while let Some(mut chunk) = chunks.next_chunk().unwrap() {
131+
while let Some(line) = chunk.next_line().unwrap() {
132+
black_box(line);
143133
}
144134
}
145135
}

0 commit comments

Comments
 (0)