This commit is contained in:
Joshua Bemenderfer
2025-09-08 16:24:38 -04:00
parent 70200a4091
commit 9d9757e868
79 changed files with 11705 additions and 3554 deletions

View File

@@ -0,0 +1,87 @@
//! Benchmarks for the Terrace Rust implementation.
use criterion::{black_box, criterion_group, criterion_main, Criterion};
use terrace::{TerraceDocument, StringReader};
fn bench_simple_parsing(c: &mut Criterion) {
let content = r#"
config
database
host localhost
port 5432
name mydb
ssl true
server
port 3000
host 0.0.0.0
ssl enabled
workers 4
logging
level info
file /var/log/app.log
"#;
c.bench_function("parse_simple_config", |b| {
b.iter(|| {
let reader = StringReader::new(black_box(content));
let mut doc = TerraceDocument::with_reader(reader);
let mut count = 0;
while let Some(node) = pollster::block_on(doc.next()) {
count += 1;
}
black_box(count);
})
});
}
fn bench_large_document(c: &mut Criterion) {
let mut content = String::new();
for i in 0..1000 {
content.push_str(&format!("item{}\n value{}\n nested{}\n", i, i, i));
}
c.bench_function("parse_large_document", |b| {
b.iter(|| {
let reader = StringReader::new(black_box(&content));
let mut doc = TerraceDocument::with_reader(reader);
let mut count = 0;
while let Some(node) = pollster::block_on(doc.next()) {
count += 1;
}
black_box(count);
})
});
}
fn bench_filtering(c: &mut Criterion) {
let content = r#"
users
user alice active
user bob inactive
user charlie active
user david inactive
user eve active
groups
group admins
member alice
member charlie
group users
member bob
member david
member eve
"#;
c.bench_function("filter_active_users", |b| {
b.iter(|| {
let reader = StringReader::new(black_box(content));
let doc = TerraceDocument::with_reader(reader);
let active_users = pollster::block_on(doc.filter(|node| {
node.head() == "user" && node.tail().contains("active")
}));
black_box(active_users.len());
})
});
}
criterion_group!(benches, bench_simple_parsing, bench_large_document, bench_filtering);
criterion_main!(benches);