This commit is contained in:
missing 2022-07-10 17:27:14 -07:00
parent dfaf41808f
commit 1a256b4be1
3 changed files with 76 additions and 0 deletions

70
src/bench.rs Normal file
View file

@ -0,0 +1,70 @@
//! `-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);
}

View file

@ -4,6 +4,9 @@ use crate::{Vec, Extra};
use std::{fmt::Debug, ops::{Deref, DerefMut}, vec::Vec as StdVec, slice, mem::size_of};
#[cfg(feature = "unstable")]
use std::ops::CoerceUnsized;
impl<T: ?Sized> Default for Vec<T> {
fn default() -> Self {
Self::new()

View file

@ -122,8 +122,11 @@
#![warn(clippy::pedantic)]
#![allow(clippy::must_use_candidate)]
#![cfg_attr(test, feature(test))]
#[cfg(test)]
mod test;
#[cfg(test)]
mod bench;
// TODO: maybe remove this? Its not that many imports
/// Prelude, suitable for glob imports.