lexpr 0.2.7

A representation for Lisp data
Documentation
use criterion::*;

use lexpr::{from_str, from_str_custom, parse};

fn bench_float_parsing(c: &mut Criterion) {
    c.bench_function("float parsing", |b| {
        b.iter(|| black_box(from_str("-1.360438755021694e308")))
    });
}

fn bench_parsing_keyword_default(c: &mut Criterion) {
    c.bench_function("keyword parsing (default settings)", |b| {
        b.iter(|| black_box(from_str("#:some-keyword")))
    });
}

fn bench_parsing_keyword_all_styles(c: &mut Criterion) {
    use parse::KeywordSyntax::*;
    c.bench_function("keyword parsing (all styles)", |b| {
        let options = parse::Options::default().with_keyword_syntaxes([
            ColonPrefix,
            ColonPostfix,
            Octothorpe,
        ]);
        b.iter(|| black_box(from_str_custom("#:octo :prefix postfix:", options)))
    });
}

fn bench_write_bytes(c: &mut Criterion) {
    let bytes = lexpr::Value::bytes(vec![123u8; 1024]);
    c.bench_function("byte vector serialization", |b| {
        b.iter(|| black_box(lexpr::to_string(&bytes)))
    });
}

criterion_group! {
    name = benches;
    config = Criterion::default();
    targets = bench_float_parsing, bench_parsing_keyword_default, bench_parsing_keyword_all_styles, bench_write_bytes,
}
criterion_main!(benches);