mirror of
https://github.com/sigp/lighthouse.git
synced 2026-05-07 16:55:46 +00:00
Add fast full-list shuffle for swap-or-not
- Passes test vectors - Implemented in beacon state - Added more docs
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
use criterion::Criterion;
|
||||
use criterion::{black_box, criterion_group, criterion_main, Benchmark};
|
||||
use swap_or_not_shuffle::{get_permutated_index, get_permutated_list};
|
||||
use swap_or_not_shuffle::{get_permutated_index, shuffle_list as fast_shuffle};
|
||||
|
||||
const SHUFFLE_ROUND_COUNT: u8 = 90;
|
||||
|
||||
@@ -53,7 +53,7 @@ fn shuffles(c: &mut Criterion) {
|
||||
Benchmark::new("512 elements", move |b| {
|
||||
let seed = vec![42; 32];
|
||||
let list: Vec<usize> = (0..512).collect();
|
||||
b.iter(|| black_box(get_permutated_list(&list, &seed, SHUFFLE_ROUND_COUNT)))
|
||||
b.iter(|| black_box(fast_shuffle(list.clone(), SHUFFLE_ROUND_COUNT, &seed, true)))
|
||||
})
|
||||
.sample_size(10),
|
||||
);
|
||||
@@ -72,7 +72,17 @@ fn shuffles(c: &mut Criterion) {
|
||||
Benchmark::new("16384 elements", move |b| {
|
||||
let seed = vec![42; 32];
|
||||
let list: Vec<usize> = (0..16384).collect();
|
||||
b.iter(|| black_box(get_permutated_list(&list, &seed, SHUFFLE_ROUND_COUNT)))
|
||||
b.iter(|| black_box(fast_shuffle(list.clone(), SHUFFLE_ROUND_COUNT, &seed, true)))
|
||||
})
|
||||
.sample_size(10),
|
||||
);
|
||||
|
||||
c.bench(
|
||||
"_fast_ whole list shuffle",
|
||||
Benchmark::new("4m elements", move |b| {
|
||||
let seed = vec![42; 32];
|
||||
let list: Vec<usize> = (0..4_000_000).collect();
|
||||
b.iter(|| black_box(fast_shuffle(list.clone(), SHUFFLE_ROUND_COUNT, &seed, true)))
|
||||
})
|
||||
.sample_size(10),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user