Skip to content

Commit eaaaa56

Browse files
committed
Switch to fastrand for bench shuffling
1 parent 7453721 commit eaaaa56

File tree

3 files changed

+12
-20
lines changed

3 files changed

+12
-20
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ default-features = false
3030

3131
[dev-dependencies]
3232
itertools = "0.14"
33-
rand = {version = "0.9", features = ["small_rng"] }
33+
fastrand = { version = "2", default-features = false }
3434
quickcheck = { version = "1.0", default-features = false }
3535
fnv = "1.0"
3636
lazy_static = "1.3"

benches/bench.rs

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,10 @@ use indexmap::IndexMap;
1616

1717
use std::collections::HashMap;
1818

19-
use rand::rngs::SmallRng;
20-
use rand::seq::SliceRandom;
21-
use rand::SeedableRng;
22-
2319
/// Use a consistently seeded Rng for benchmark stability
24-
fn small_rng() -> SmallRng {
20+
fn small_rng() -> fastrand::Rng {
2521
let seed = u64::from_le_bytes(*b"indexmap");
26-
SmallRng::seed_from_u64(seed)
22+
fastrand::Rng::with_seed(seed)
2723
}
2824

2925
#[bench]
@@ -280,7 +276,7 @@ where
280276
{
281277
let mut v = Vec::from_iter(iter);
282278
let mut rng = small_rng();
283-
v.shuffle(&mut rng);
279+
rng.shuffle(&mut v);
284280
v
285281
}
286282

@@ -523,7 +519,7 @@ fn hashmap_merge_shuffle(b: &mut Bencher) {
523519
b.iter(|| {
524520
let mut merged = first_map.clone();
525521
v.extend(second_map.iter().map(|(&k, &v)| (k, v)));
526-
v.shuffle(&mut rng);
522+
rng.shuffle(&mut v);
527523
merged.extend(v.drain(..));
528524

529525
merged
@@ -550,7 +546,7 @@ fn indexmap_merge_shuffle(b: &mut Bencher) {
550546
b.iter(|| {
551547
let mut merged = first_map.clone();
552548
v.extend(second_map.iter().map(|(&k, &v)| (k, v)));
553-
v.shuffle(&mut rng);
549+
rng.shuffle(&mut v);
554550
merged.extend(v.drain(..));
555551

556552
merged
@@ -562,7 +558,7 @@ fn swap_remove_indexmap_100_000(b: &mut Bencher) {
562558
let map = IMAP_100K.clone();
563559
let mut keys = Vec::from_iter(map.keys().copied());
564560
let mut rng = small_rng();
565-
keys.shuffle(&mut rng);
561+
rng.shuffle(&mut keys);
566562

567563
b.iter(|| {
568564
let mut map = map.clone();
@@ -579,7 +575,7 @@ fn shift_remove_indexmap_100_000_few(b: &mut Bencher) {
579575
let map = IMAP_100K.clone();
580576
let mut keys = Vec::from_iter(map.keys().copied());
581577
let mut rng = small_rng();
582-
keys.shuffle(&mut rng);
578+
rng.shuffle(&mut keys);
583579
keys.truncate(50);
584580

585581
b.iter(|| {
@@ -600,7 +596,7 @@ fn shift_remove_indexmap_2_000_full(b: &mut Bencher) {
600596
map.insert(key, key);
601597
}
602598
let mut rng = small_rng();
603-
keys.shuffle(&mut rng);
599+
rng.shuffle(&mut keys);
604600

605601
b.iter(|| {
606602
let mut map = map.clone();

benches/faststring.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,15 @@ use indexmap::IndexMap;
88

99
use std::collections::HashMap;
1010

11-
use rand::rngs::SmallRng;
12-
use rand::seq::SliceRandom;
13-
use rand::SeedableRng;
14-
1511
use std::hash::{Hash, Hasher};
1612

1713
use std::borrow::Borrow;
1814
use std::ops::Deref;
1915

2016
/// Use a consistently seeded Rng for benchmark stability
21-
fn small_rng() -> SmallRng {
17+
fn small_rng() -> fastrand::Rng {
2218
let seed = u64::from_le_bytes(*b"indexmap");
23-
SmallRng::seed_from_u64(seed)
19+
fastrand::Rng::with_seed(seed)
2420
}
2521

2622
#[derive(PartialEq, Eq, Copy, Clone)]
@@ -68,7 +64,7 @@ where
6864
{
6965
let mut v = Vec::from_iter(iter);
7066
let mut rng = small_rng();
71-
v.shuffle(&mut rng);
67+
rng.shuffle(&mut v);
7268
v
7369
}
7470

0 commit comments

Comments
 (0)