dyn_vec/src/bench.rs
2022-07-10 17:27:14 -07:00

70 lines
1.4 KiB
Rust

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