mirror of
https://codeberg.org/icewind/php-literal-parser.git
synced 2026-06-03 18:44:07 +02:00
switch benchmarks to criterion
This commit is contained in:
parent
0ab25b7490
commit
987ae2c474
2 changed files with 35 additions and 26 deletions
|
|
@ -7,7 +7,7 @@ edition = "2018"
|
||||||
license = "MIT OR Apache-2.0"
|
license = "MIT OR Apache-2.0"
|
||||||
repository = "https://github.com/icewind1991/php-literal-parser"
|
repository = "https://github.com/icewind1991/php-literal-parser"
|
||||||
documentation = "https://docs.rs/php-literal-parser"
|
documentation = "https://docs.rs/php-literal-parser"
|
||||||
rust-version = "1.70"
|
rust-version = "1.70.0"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
logos = "0.14.0"
|
logos = "0.14.0"
|
||||||
|
|
@ -21,3 +21,8 @@ parse-display = "0.9.0"
|
||||||
maplit = "1.0.2"
|
maplit = "1.0.2"
|
||||||
serde_derive = "1.0.197"
|
serde_derive = "1.0.197"
|
||||||
miette = { version = "7.2.0", features = ["fancy"] }
|
miette = { version = "7.2.0", features = ["fancy"] }
|
||||||
|
criterion = "0.5.1"
|
||||||
|
|
||||||
|
[[bench]]
|
||||||
|
name = "parse"
|
||||||
|
harness = false
|
||||||
|
|
@ -1,51 +1,55 @@
|
||||||
#![feature(test)]
|
|
||||||
|
|
||||||
extern crate test;
|
|
||||||
|
|
||||||
use php_literal_parser::{from_str, Value};
|
use php_literal_parser::{from_str, Value};
|
||||||
use test::Bencher;
|
use criterion::{black_box, criterion_group, criterion_main, Criterion};
|
||||||
|
|
||||||
#[bench]
|
fn perf_parse_int_basic(b: &mut Criterion) {
|
||||||
fn perf_parse_int_basic(b: &mut Bencher) {
|
|
||||||
let input = "12345676";
|
let input = "12345676";
|
||||||
|
|
||||||
b.iter(|| {
|
b.bench_function("parse int", |b| {
|
||||||
assert_eq!(from_str::<Value>(input).unwrap(), 12345676);
|
b.iter(|| {
|
||||||
|
assert_eq!(black_box(from_str::<Value>(black_box(input)).unwrap()), 12345676);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
#[bench]
|
fn perf_str_double_basic(b: &mut Criterion) {
|
||||||
fn perf_str_double_basic(b: &mut Bencher) {
|
|
||||||
let input = r#""aut dolores excepturi rerum est velit ad natus eveniet quo tenetur et fugiat sit velit ipsam nesciunt sint et architecto""#;
|
let input = r#""aut dolores excepturi rerum est velit ad natus eveniet quo tenetur et fugiat sit velit ipsam nesciunt sint et architecto""#;
|
||||||
|
|
||||||
b.iter(|| {
|
b.bench_function("parse double quote string without escapes",|b| {
|
||||||
assert!(from_str::<Value>(input).unwrap().is_string());
|
b.iter(|| {
|
||||||
|
assert!(black_box(from_str::<Value>(black_box(input)).unwrap()).is_string());
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
#[bench]
|
fn perf_str_double_escape(b: &mut Criterion) {
|
||||||
fn perf_str_double_escape(b: &mut Bencher) {
|
|
||||||
let input = r#""aut dolores excepturi rerum est velit ad natus \"eveniet\" quo tenetur et fugiat sit velit ipsam nesciunt sint et architecto""#;
|
let input = r#""aut dolores excepturi rerum est velit ad natus \"eveniet\" quo tenetur et fugiat sit velit ipsam nesciunt sint et architecto""#;
|
||||||
|
|
||||||
b.iter(|| {
|
b.bench_function("parse double quote escaped string", |b| {
|
||||||
assert!(from_str::<Value>(input).unwrap().is_string());
|
b.iter(|| {
|
||||||
|
assert!(black_box(from_str::<Value>(black_box(input)).unwrap()).is_string());
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
#[bench]
|
fn perf_str_single_basic(b: &mut Criterion) {
|
||||||
fn perf_str_single_basic(b: &mut Bencher) {
|
|
||||||
let input = r#"'aut dolores excepturi rerum est velit ad natus eveniet quo tenetur et fugiat sit velit ipsam nesciunt sint et architecto'"#;
|
let input = r#"'aut dolores excepturi rerum est velit ad natus eveniet quo tenetur et fugiat sit velit ipsam nesciunt sint et architecto'"#;
|
||||||
|
|
||||||
b.iter(|| {
|
b.bench_function("parse single quote string without escapes", |b| {
|
||||||
assert!(from_str::<Value>(input).unwrap().is_string());
|
b.iter(|| {
|
||||||
|
assert!(black_box(from_str::<Value>(black_box(input)).unwrap()).is_string());
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
#[bench]
|
fn perf_str_single_escape(b: &mut Criterion) {
|
||||||
fn perf_str_single_escape(b: &mut Bencher) {
|
|
||||||
let input = r#"'aut dolores excepturi rerum est velit ad natus \"eveniet\" quo tenetur et fugiat sit velit ipsam nesciunt sint et architecto'"#;
|
let input = r#"'aut dolores excepturi rerum est velit ad natus \"eveniet\" quo tenetur et fugiat sit velit ipsam nesciunt sint et architecto'"#;
|
||||||
|
|
||||||
b.iter(|| {
|
b.bench_function("parse single quote escaped string", |b| {
|
||||||
assert!(from_str::<Value>(input).unwrap().is_string());
|
b.iter(|| {
|
||||||
|
assert!(black_box(from_str::<Value>(black_box(input)).unwrap().is_string()));
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
criterion_group!(benches, perf_str_single_escape, perf_str_single_basic, perf_str_double_escape, perf_str_double_basic, perf_parse_int_basic);
|
||||||
|
criterion_main!(benches);
|
||||||
Loading…
Add table
Add a link
Reference in a new issue