Skip to content

Commit 3179d6e

Browse files
committed
first pass of traversal strategies
1 parent b2adee3 commit 3179d6e

File tree

6 files changed

+780
-14
lines changed

6 files changed

+780
-14
lines changed

benches/divan.rs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,58 @@ mod examples {
122122
}
123123
}
124124

125+
mod generation_strategies {
126+
use bnf::{CoverageGuided, DepthBounded, RandomWalk, Weighted};
127+
128+
const SEED: [u8; 32] = [0; 32];
129+
130+
fn postal_grammar() -> bnf::Grammar {
131+
include_str!("../tests/fixtures/postal_address.terminated.input.bnf")
132+
.parse()
133+
.unwrap()
134+
}
135+
136+
#[divan::bench(min_time = 5, max_time = 30)]
137+
fn generate_random_walk(bencher: divan::Bencher) {
138+
bencher.with_inputs(postal_grammar).bench_refs(|grammar| {
139+
let mut strategy = RandomWalk::from_seed(SEED);
140+
grammar
141+
.generate_seeded_with_strategy(&mut strategy)
142+
.unwrap()
143+
});
144+
}
145+
146+
#[divan::bench(min_time = 5, max_time = 30)]
147+
fn generate_depth_bounded(bencher: divan::Bencher) {
148+
bencher.with_inputs(postal_grammar).bench_refs(|grammar| {
149+
let mut strategy = DepthBounded::from_seed(10, SEED);
150+
grammar
151+
.generate_seeded_with_strategy(&mut strategy)
152+
.unwrap()
153+
});
154+
}
155+
156+
#[divan::bench(min_time = 5, max_time = 30)]
157+
fn generate_coverage_guided(bencher: divan::Bencher) {
158+
bencher.with_inputs(postal_grammar).bench_refs(|grammar| {
159+
let mut strategy = CoverageGuided::from_seed(SEED);
160+
grammar
161+
.generate_seeded_with_strategy(&mut strategy)
162+
.unwrap()
163+
});
164+
}
165+
166+
#[divan::bench(min_time = 5, max_time = 30)]
167+
fn generate_weighted(bencher: divan::Bencher) {
168+
bencher.with_inputs(postal_grammar).bench_refs(|grammar| {
169+
let mut strategy = Weighted::from_seed(100, 1, SEED);
170+
grammar
171+
.generate_seeded_with_strategy(&mut strategy)
172+
.unwrap()
173+
});
174+
}
175+
}
176+
125177
mod parser_api {
126178
#[divan::bench(min_time = 5, max_time = 60)]
127179
fn build_postal_parser(bencher: divan::Bencher) {

benches/util.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,4 @@ pub fn init_tracing() -> impl Drop {
1717
}
1818

1919
#[cfg(not(feature = "tracing"))]
20-
pub fn init_tracing() {}
20+
pub const fn init_tracing() {}

0 commit comments

Comments
 (0)