Files
discrete_range_map/benches/operations.rs
T
ripytide bbaf7aeab5 fixes #6
2023-03-31 16:47:09 +01:00

74 lines
1.6 KiB
Rust

#![feature(test)]
use std::ops::{Bound, Range};
extern crate test;
use test::Bencher;
extern crate range_bounds_map;
use range_bounds_map::*;
/// linear multiplier for work done by benchmarks
const REPEAT: usize = 120;
/// utility for constructing identity [i,i]->i map for benches
fn build_identity_map(n: usize) -> RangeBoundsMap<usize, Range<usize>, usize> {
let mut map = RangeBoundsMap::new();
for i in 0..n {
map.insert_strict(i..i + 1, i).expect("insert failed");
}
map
}
#[bench]
fn bench_overlaps(b: &mut Bencher) {
let map = build_identity_map(REPEAT);
b.iter(|| for _ in map.overlapping(&(0..REPEAT)) {})
}
#[bench]
fn bench_iter(b: &mut Bencher) {
let map = build_identity_map(REPEAT);
b.iter(|| for _ in map.iter() {})
}
#[bench]
fn bench_remove_overlapping(b: &mut Bencher) {
let map = build_identity_map(REPEAT);
b.iter(|| {
let mut map = map.clone();
for _ in map.remove_overlapping(&(0..REPEAT)) {}
})
}
#[bench]
fn bench_cut(b: &mut Bencher) {
let map = build_identity_map(REPEAT);
b.iter(|| {
let mut map = map.clone();
for _ in map.cut(&(0..REPEAT)).expect("Failed to cut") {}
})
}
#[bench]
fn bench_gaps(b: &mut Bencher) {
let map = build_identity_map(REPEAT);
b.iter(|| for _ in map.gaps(&(0..REPEAT)) {})
}
#[bench]
fn bench_split_off(b: &mut Bencher) {
let map = build_identity_map(REPEAT);
b.iter(|| {
let mut map = map.clone();
map.split_off(Bound::Included(REPEAT / 2))
.expect("Failed to split");
})
}
#[bench]
fn bench_overlapping_trimmed(b: &mut Bencher) {
let map = build_identity_map(REPEAT);
b.iter(|| for _ in map.overlapping_trimmed(&(1..REPEAT - 1)) {})
}