Files
cli/vendor/jsonpath-rust/benches/equal.rs

42 lines
1.1 KiB
Rust

use criterion::{criterion_group, criterion_main, Criterion};
use jsonpath_rust::{JsonPath, JsonPathQuery};
use serde_json::json;
use std::str::FromStr;
struct SearchData {
json: serde_json::Value,
path: JsonPath,
}
const PATH: &str = "$.[?(@.author == 'abcd(Rees)')]";
fn equal_perf_test_with_reuse(cfg: &SearchData) {
let _v = cfg.path.find(&cfg.json);
}
fn equal_perf_test_without_reuse() {
let json = Box::new(json!({
"author":"abcd(Rees)",
}));
let _v = json.path(PATH).expect("the path is correct");
}
pub fn criterion_benchmark(c: &mut Criterion) {
let data = SearchData {
json: json!({
"author":"abcd(Rees)",
}),
path: JsonPath::from_str(PATH).unwrap(),
};
c.bench_function("equal bench with reuse", |b| {
b.iter(|| equal_perf_test_with_reuse(&data))
});
c.bench_function("equal bench without reuse", |b| {
b.iter(equal_perf_test_without_reuse)
});
}
criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);