#![feature(test)] | |
extern crate test; | |
use crossbeam_epoch as epoch; | |
use crossbeam_utils::thread::scope; | |
use test::Bencher; | |
#[bench] | |
fn single_pin(b: &mut Bencher) { | |
b.iter(epoch::pin); | |
} | |
#[bench] | |
fn multi_pin(b: &mut Bencher) { | |
const THREADS: usize = 16; | |
const STEPS: usize = 100_000; | |
b.iter(|| { | |
scope(|s| { | |
for _ in 0..THREADS { | |
s.spawn(|_| { | |
for _ in 0..STEPS { | |
epoch::pin(); | |
} | |
}); | |
} | |
}) | |
.unwrap(); | |
}); | |
} |