extern crate criterion;
extern crate static_or_heap_string;
use criterion::{black_box, criterion_group, criterion_main, Criterion};
use static_or_heap_string::StaticOrHeapString;
fn bench_static_or_heap_string(c: &mut Criterion) {
let static_str = StaticOrHeapString::Static("hello");
let heap_str = StaticOrHeapString::Heap(String::from("world"));
c.bench_function("StaticOrHeapString::as_str (static)", |b| {
b.iter(|| black_box(static_str.as_str()))
});
c.bench_function("StaticOrHeapString::as_str (heap)", |b| {
b.iter(|| black_box(heap_str.as_str()))
});
c.bench_function("StaticOrHeapString::is_empty (static)", |b| {
b.iter(|| black_box(static_str.is_empty()))
});
c.bench_function("StaticOrHeapString::is_empty (heap)", |b| {
b.iter(|| black_box(heap_str.is_empty()))
});
c.bench_function("StaticOrHeapString::len (static)", |b| {
b.iter(|| black_box(static_str.len()))
});
c.bench_function("StaticOrHeapString::len (heap)", |b| {
b.iter(|| black_box(heap_str.len()))
});
}
criterion_group!(benches, bench_static_or_heap_string);
criterion_main!(benches);