47 lines
927 B
Rust
47 lines
927 B
Rust
#![feature(test)]
|
|
|
|
extern crate test;
|
|
|
|
use {
|
|
std::sync::atomic::{AtomicU64, Ordering},
|
|
test::Bencher,
|
|
};
|
|
|
|
const N: usize = 1_000_000;
|
|
|
|
// test bench_reset1 ... bench: 436,240 ns/iter (+/- 176,714)
|
|
// test bench_reset2 ... bench: 274,007 ns/iter (+/- 129,552)
|
|
|
|
#[bench]
|
|
fn bench_reset1(bencher: &mut Bencher) {
|
|
solana_logger::setup();
|
|
|
|
let mut v = Vec::with_capacity(N);
|
|
v.resize_with(N, AtomicU64::default);
|
|
|
|
bencher.iter(|| {
|
|
test::black_box({
|
|
for i in &v {
|
|
i.store(0, Ordering::Relaxed);
|
|
}
|
|
0
|
|
});
|
|
});
|
|
}
|
|
|
|
#[bench]
|
|
fn bench_reset2(bencher: &mut Bencher) {
|
|
solana_logger::setup();
|
|
|
|
let mut v = Vec::with_capacity(N);
|
|
v.resize_with(N, AtomicU64::default);
|
|
|
|
bencher.iter(|| {
|
|
test::black_box({
|
|
v.clear();
|
|
v.resize_with(N, AtomicU64::default);
|
|
0
|
|
});
|
|
});
|
|
}
|