bench: improve crossbeam benchmark to be more accurate

This commit is contained in:
darkfi
2024-06-12 12:46:30 +02:00
parent 2dc0b414bd
commit eecadc3482

View File

@@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion};
use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion, BatchSize};
use easy_parallel::Parallel;
use std::{collections::HashMap, sync::{Arc, Mutex, atomic::{AtomicBool, Ordering}}};
use rand::{rngs::OsRng, Rng};
@@ -49,14 +49,18 @@ fn crossbeam(c: &mut Criterion) {
});
group.bench_with_input(BenchmarkId::from_parameter(k), &k, |b, &_| {
b.iter(|| {
// Do 10k inserts
for _ in 0..10_000 {
b.iter_batched(
|| {
let key: usize = OsRng.gen();
let val: usize = OsRng.gen();
(key, val)
},
|(key, val)| {
// Do 10k inserts
map.insert(key, val);
}
})
},
BatchSize::SmallInput
)
});
stopped.store(true, Ordering::Relaxed);
@@ -94,14 +98,18 @@ fn crossbeam(c: &mut Criterion) {
});
group.bench_with_input(BenchmarkId::from_parameter(k), &k, |b, &_| {
b.iter(|| {
// Do 10k inserts
for _ in 0..10_000 {
b.iter_batched(
|| {
let key: usize = OsRng.gen();
let val: usize = OsRng.gen();
(key, val)
},
|(key, val)| {
// Do 10k inserts
map.lock().unwrap().insert(key, val);
}
})
},
BatchSize::SmallInput
)
});
stopped.store(true, Ordering::Relaxed);