benches
This commit is contained in:
parent
dfaf41808f
commit
1a256b4be1
70
src/bench.rs
Normal file
70
src/bench.rs
Normal 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);
|
||||
}
|
|
@ -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()
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in a new issue