dyn_vec/src/bench.rs
2022-12-26 11:39:50 -06:00

83 lines
1.6 KiB
Rust

//! `-Zmiri-disable-isolation` needed to run these under miri
use test::{black_box, Bencher};
extern crate test;
use super::DynVec;
use std::{fmt::Debug, mem, vec::Vec};
#[bench]
#[cfg_attr(miri, ignore)]
fn std_push(b: &mut Bencher) {
let mut vec = Vec::new();
b.iter(|| vec.push(black_box(5)));
black_box(vec);
}
#[bench]
#[cfg_attr(miri, ignore)]
fn dyn_push(b: &mut Bencher) {
let mut vec = DynVec::new();
b.iter(|| vec.push(black_box(5)));
black_box(vec);
}
#[bench]
#[cfg_attr(miri, ignore)]
fn std_push_box(b: &mut Bencher) {
let mut vec = Vec::new();
b.iter(|| vec.push(black_box(Box::new(5) as Box<dyn Debug>)));
black_box(vec);
}
#[bench]
#[cfg_attr(miri, ignore)]
fn dyn_push_unsize(b: &mut Bencher) {
let mut vec = DynVec::new();
b.iter(|| vec.push_unsize_stable(black_box(5), |v| v as &dyn Debug));
black_box(vec);
}
#[bench]
#[cfg_attr(miri, ignore)]
fn dyn_push_box(b: &mut Bencher) {
let mut vec = DynVec::new();
b.iter(|| vec.push_box(black_box(Box::new(5) as Box<dyn Debug>)));
black_box(vec);
}
#[bench]
#[cfg_attr(miri, ignore)]
fn dyn_push_then_unsize(b: &mut Bencher) {
let mut vec = DynVec::new();
b.iter(|| vec.push(black_box(5)));
let vec = black_box(vec).unsize_stable(|v| v as &dyn Debug);
black_box(vec);
}
#[bench]
#[cfg_attr(miri, ignore)]
fn box_forget(b: &mut Bencher) {
b.iter(|| mem::forget(black_box(Box::new(black_box(5)))));
}
#[bench]
#[cfg_attr(miri, ignore)]
fn box_dealloc(b: &mut Bencher) {
b.iter(|| drop(black_box(Box::new(black_box(5)))));
}