switch benchmarks to criterion

This commit is contained in:
Robin Appelman 2024-03-11 15:37:44 +01:00
commit 987ae2c474
2 changed files with 35 additions and 26 deletions

View file

@ -1,51 +1,55 @@
#![feature(test)]
extern crate test;
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 Bencher) {
fn perf_parse_int_basic(b: &mut Criterion) {
let input = "12345676";
b.iter(|| {
assert_eq!(from_str::<Value>(input).unwrap(), 12345676);
b.bench_function("parse int", |b| {
b.iter(|| {
assert_eq!(black_box(from_str::<Value>(black_box(input)).unwrap()), 12345676);
});
});
}
#[bench]
fn perf_str_double_basic(b: &mut Bencher) {
fn perf_str_double_basic(b: &mut Criterion) {
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(|| {
assert!(from_str::<Value>(input).unwrap().is_string());
b.bench_function("parse double quote string without escapes",|b| {
b.iter(|| {
assert!(black_box(from_str::<Value>(black_box(input)).unwrap()).is_string());
});
});
}
#[bench]
fn perf_str_double_escape(b: &mut Bencher) {
fn perf_str_double_escape(b: &mut Criterion) {
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(|| {
assert!(from_str::<Value>(input).unwrap().is_string());
b.bench_function("parse double quote escaped string", |b| {
b.iter(|| {
assert!(black_box(from_str::<Value>(black_box(input)).unwrap()).is_string());
});
});
}
#[bench]
fn perf_str_single_basic(b: &mut Bencher) {
fn perf_str_single_basic(b: &mut Criterion) {
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(|| {
assert!(from_str::<Value>(input).unwrap().is_string());
b.bench_function("parse single quote string without escapes", |b| {
b.iter(|| {
assert!(black_box(from_str::<Value>(black_box(input)).unwrap()).is_string());
});
});
}
#[bench]
fn perf_str_single_escape(b: &mut Bencher) {
fn perf_str_single_escape(b: &mut Criterion) {
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(|| {
assert!(from_str::<Value>(input).unwrap().is_string());
b.bench_function("parse single quote escaped string", |b| {
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);