use bencher::{benchmark_group, benchmark_main, Bencher};
use std::time::SystemTime;
use ulid::{Generator, Ulid, ULID_LEN};
fn bench_new(b: &mut Bencher) {
b.iter(Ulid::generate);
}
fn bench_generator_generate(b: &mut Bencher) {
let mut generator = Generator::new();
b.iter(|| generator.generate().unwrap());
}
fn bench_from_time(b: &mut Bencher) {
let time = SystemTime::now();
b.iter(|| Ulid::from_datetime(time));
}
fn bench_to_str(b: &mut Bencher) {
let ulid = Ulid::generate();
b.iter(|| {
let mut buffer = [0; ULID_LEN];
ulid.array_to_str(&mut buffer);
});
}
fn bench_to_string(b: &mut Bencher) {
let ulid = Ulid::generate();
b.iter(|| ulid.to_string());
}
fn bench_from_string(b: &mut Bencher) {
let s = Ulid::generate().to_string();
b.iter(|| Ulid::from_string(&s).unwrap());
}
benchmark_group!(
ulid_perf,
bench_new,
bench_generator_generate,
bench_from_time,
bench_to_str,
bench_to_string,
bench_from_string
);
benchmark_main!(ulid_perf);