#![forbid(unsafe_code)]
use criterion::{criterion_group, criterion_main, Criterion};
use rusty_ulid::*;
use std::str::FromStr;
#[allow(clippy::redundant_closure)]
fn criterion_benchmark(c: &mut Criterion) {
c.bench_function("generate_ulid_string", |b| {
b.iter(|| generate_ulid_string())
});
c.bench_function("generate_ulid_string_formatter", |b| {
b.iter(|| {
use std::fmt::Write;
let value = Ulid::generate();
let mut string = String::with_capacity(26);
string
.write_fmt(format_args!("{value}"))
.expect("a Display implementation returned an error unexpectedly");
string
})
});
c.bench_function("generate_ulid_string_tostring_trait", |b| {
b.iter(|| {
let value = Ulid::generate();
ToString::to_string(&value)
})
});
c.bench_function("generate_ulid_bytes", |b| b.iter(|| generate_ulid_bytes()));
c.bench_function("from_str", |b| {
b.iter(|| Ulid::from_str("01CAH7NXGRDJNE9B1NY7PQGYV7"))
});
c.bench_function("parse_crockford_u128", |b| {
b.iter(|| crockford::parse_crockford_u128("01CAH7NXGRDJNE9B1NY7PQGYV7"))
});
c.bench_function("parse_crockford_u64_tuple", |b| {
b.iter(|| crockford::parse_crockford_u64_tuple("01CAH7NXGRDJNE9B1NY7PQGYV7"))
});
c.bench_function("append_crockford_u128", |b| {
b.iter(|| {
let mut string = String::with_capacity(26);
crockford::append_crockford_u128(
0x0162_A27A_F618_6CAA_E4AC_35F1_ED78_7B67,
&mut string,
);
string
})
});
c.bench_function("append_crockford_u64_tuple", |b| {
b.iter(|| {
let mut string = String::with_capacity(26);
crockford::append_crockford_u64_tuple(
(0x0162_A27A_F618_6CAA, 0xE4AC_35F1_ED78_7B67),
&mut string,
);
string
})
});
}
criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);