Skip to content

Commit

Permalink
Test a workaround for bheisler/iai#38
Browse files Browse the repository at this point in the history
  • Loading branch information
Pr0methean committed Jan 21, 2024
1 parent 03e0448 commit d25559c
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion benches/iai.rs
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ macro_rules! contended_bench_iai {
let rngs: Vec<_> = (0..$threads)
.map(|_| root.new_standard_rng(RESEEDING_THRESHOLD))
.collect();
let main_thread_rng = rngs.pop().unwrap();
drop(root);
let background_threads: Vec<_> = rngs.into_iter()
.map(|mut rng| {
Expand All @@ -61,21 +62,25 @@ macro_rules! contended_bench_iai {
})
})
.collect();
while ITERATIONS_LEFT.fetch_sub(1, SeqCst) > 0 {
black_box(main_thread_rng.next_u64());
}
background_threads
.into_iter()
.for_each(|handle| handle.join().unwrap());
}

fn [< contended_bench_ $n _local_buffer >]() {
ITERATIONS_LEFT.store(2 * RESEEDING_THRESHOLD * $n.max(1), SeqCst);
let rngs: Vec<_> = (0..$threads - 1)
let rngs: Vec<_> = (0..$threads)
.map(|_| {
let mut buffer = BlockRng64::new(RngBufferCore::<$n, OsRng>(OsRng::default()));
let mut seed = [0u8; 32];
buffer.fill_bytes(&mut seed);
ReseedingRng::new(ChaCha12Core::from_seed(seed), RESEEDING_THRESHOLD, buffer)
})
.collect();
let main_thread_rng = rngs.pop().unwrap();
let background_threads: Vec<_> = rngs.into_iter()
.map(|mut rng| {
spawn(move || {
Expand All @@ -85,6 +90,9 @@ macro_rules! contended_bench_iai {
})
})
.collect();
while ITERATIONS_LEFT.fetch_sub(1, SeqCst) > 0 {
black_box(main_thread_rng.next_u64());
}
background_threads
.into_iter()
.for_each(|handle| handle.join().unwrap());
Expand Down

0 comments on commit d25559c

Please sign in to comment.