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};
|
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> {
|
impl<T: ?Sized> Default for Vec<T> {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self::new()
|
Self::new()
|
||||||
|
|
|
@ -122,8 +122,11 @@
|
||||||
#![warn(clippy::pedantic)]
|
#![warn(clippy::pedantic)]
|
||||||
#![allow(clippy::must_use_candidate)]
|
#![allow(clippy::must_use_candidate)]
|
||||||
|
|
||||||
|
#![cfg_attr(test, feature(test))]
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test;
|
mod test;
|
||||||
|
#[cfg(test)]
|
||||||
|
mod bench;
|
||||||
|
|
||||||
// TODO: maybe remove this? Its not that many imports
|
// TODO: maybe remove this? Its not that many imports
|
||||||
/// Prelude, suitable for glob imports.
|
/// Prelude, suitable for glob imports.
|
||||||
|
|
Loading…
Reference in a new issue