mirror of https://github.com/rust-lang/rust.git
add benches from bluss' gists
This commit is contained in:
parent
a4e385a0d0
commit
2f700d085a
|
@ -471,3 +471,107 @@ bench_in_place![
|
|||
bench_in_place_u128_i1_0100, u128, 100, 1;
|
||||
bench_in_place_u128_i1_1000, u128, 1000, 1
|
||||
];
|
||||
|
||||
#[bench]
|
||||
fn bench_chain_collect(b: &mut test::Bencher) {
|
||||
let data = black_box([0; LEN]);
|
||||
b.iter(|| data.iter().cloned().chain([1].iter().cloned()).collect::<Vec<_>>());
|
||||
}
|
||||
|
||||
#[bench]
|
||||
fn bench_chain_chain_collect(b: &mut test::Bencher) {
|
||||
let data = black_box([0; LEN]);
|
||||
b.iter(|| {
|
||||
data.iter()
|
||||
.cloned()
|
||||
.chain([1].iter().cloned())
|
||||
.chain([2].iter().cloned())
|
||||
.collect::<Vec<_>>()
|
||||
});
|
||||
}
|
||||
|
||||
#[bench]
|
||||
fn bench_nest_chain_chain_collect(b: &mut test::Bencher) {
|
||||
let data = black_box([0; LEN]);
|
||||
b.iter(|| {
|
||||
data.iter().cloned().chain([1].iter().chain([2].iter()).cloned()).collect::<Vec<_>>()
|
||||
});
|
||||
}
|
||||
|
||||
pub fn example_plain_slow(l: &[u32]) -> Vec<u32> {
|
||||
let mut result = Vec::with_capacity(l.len());
|
||||
result.extend(l.iter().rev());
|
||||
result
|
||||
}
|
||||
|
||||
pub fn map_fast(l: &[(u32, u32)]) -> Vec<u32> {
|
||||
let mut result = Vec::with_capacity(l.len());
|
||||
for i in 0..l.len() {
|
||||
unsafe {
|
||||
*result.get_unchecked_mut(i) = l[i].0;
|
||||
result.set_len(i);
|
||||
}
|
||||
}
|
||||
result
|
||||
}
|
||||
|
||||
const LEN: usize = 16384;
|
||||
|
||||
#[bench]
|
||||
fn bench_range_map_collect(b: &mut test::Bencher) {
|
||||
b.iter(|| (0..LEN).map(|_| u32::default()).collect::<Vec<_>>());
|
||||
}
|
||||
|
||||
#[bench]
|
||||
fn bench_chain_extend_ref(b: &mut test::Bencher) {
|
||||
let data = black_box([0; LEN]);
|
||||
b.iter(|| {
|
||||
let mut v = Vec::<u32>::with_capacity(data.len() + 1);
|
||||
v.extend(data.iter().chain([1].iter()));
|
||||
v
|
||||
});
|
||||
}
|
||||
|
||||
#[bench]
|
||||
fn bench_chain_extend_value(b: &mut test::Bencher) {
|
||||
let data = black_box([0; LEN]);
|
||||
b.iter(|| {
|
||||
let mut v = Vec::<u32>::with_capacity(data.len() + 1);
|
||||
v.extend(data.iter().cloned().chain(Some(1)));
|
||||
v
|
||||
});
|
||||
}
|
||||
|
||||
#[bench]
|
||||
fn bench_rev_1(b: &mut test::Bencher) {
|
||||
let data = black_box([0; LEN]);
|
||||
b.iter(|| {
|
||||
let mut v = Vec::<u32>::new();
|
||||
v.extend(data.iter().rev());
|
||||
v
|
||||
});
|
||||
}
|
||||
|
||||
#[bench]
|
||||
fn bench_rev_2(b: &mut test::Bencher) {
|
||||
let data = black_box([0; LEN]);
|
||||
b.iter(|| {
|
||||
example_plain_slow(&data);
|
||||
});
|
||||
}
|
||||
|
||||
#[bench]
|
||||
fn bench_map_regular(b: &mut test::Bencher) {
|
||||
let data = black_box([(0, 0); LEN]);
|
||||
b.iter(|| {
|
||||
let mut v = Vec::<u32>::new();
|
||||
v.extend(data.iter().map(|t| t.1));
|
||||
v
|
||||
});
|
||||
}
|
||||
|
||||
#[bench]
|
||||
fn bench_map_fast(b: &mut test::Bencher) {
|
||||
let data = black_box([(0, 0); LEN]);
|
||||
b.iter(|| map_fast(&data));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue