mirror of
https://github.com/meilisearch/meilisearch.git
synced 2024-11-22 10:07:40 +08:00
Add benchmarks to the flatten-serde-json subcrate
This commit is contained in:
parent
3828635fb2
commit
436d2032c4
@ -5,7 +5,12 @@ edition = "2021"
|
||||
description = "Flatten serde-json objects like elastic search"
|
||||
readme = "README.md"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
serde_json = "1.0"
|
||||
|
||||
[dev-dependencies]
|
||||
criterion = { version = "0.3", features = ["html_reports"] }
|
||||
|
||||
[[bench]]
|
||||
name = "benchmarks"
|
||||
harness = false
|
||||
|
42
flatten-serde-json/benches/benchmarks.rs
Normal file
42
flatten-serde-json/benches/benchmarks.rs
Normal file
@ -0,0 +1,42 @@
|
||||
use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion};
|
||||
use flatten_serde_json::flatten;
|
||||
use serde_json::json;
|
||||
|
||||
pub fn flatten_simple(c: &mut Criterion) {
|
||||
let mut input = json!({
|
||||
"a": {
|
||||
"b": "c",
|
||||
"d": "e",
|
||||
"f": "g"
|
||||
}
|
||||
});
|
||||
let object = input.as_object_mut().unwrap();
|
||||
|
||||
c.bench_with_input(BenchmarkId::new("flatten", "simple"), &object, |b, input| {
|
||||
b.iter(|| flatten(input))
|
||||
});
|
||||
}
|
||||
|
||||
pub fn flatten_complex(c: &mut Criterion) {
|
||||
let mut input = json!({
|
||||
"a": [
|
||||
"b",
|
||||
["c", "d"],
|
||||
{ "e": ["f", "g"] },
|
||||
[
|
||||
{ "h": "i" },
|
||||
{ "e": ["j", { "z": "y" }] },
|
||||
],
|
||||
["l"],
|
||||
"m",
|
||||
]
|
||||
});
|
||||
let object = input.as_object_mut().unwrap();
|
||||
|
||||
c.bench_with_input(BenchmarkId::new("flatten", "complex"), &object, |b, input| {
|
||||
b.iter(|| flatten(input))
|
||||
});
|
||||
}
|
||||
|
||||
criterion_group!(benches, flatten_simple, flatten_complex);
|
||||
criterion_main!(benches);
|
Loading…
Reference in New Issue
Block a user