83 lines
1.6 KiB
Rust
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)))));
|
|
}
|