diff --git a/benches/bench.rs b/benches/bench.rs index a7dbcf1..b73bec8 100644 --- a/benches/bench.rs +++ b/benches/bench.rs @@ -3,12 +3,12 @@ extern crate test; use test::Bencher; extern crate range_bounds_map; -use std::ops::Range; +use std::ops::{Bound, Range}; use range_bounds_map::*; /// linear multiplier for work done by benchmarks -const REPEAT: usize = 100; +const REPEAT: usize = 120; /// utility for constructing identity [i,i]->i map for benches fn build_identity_map(n: usize) -> RangeBoundsMap, usize> { @@ -88,25 +88,54 @@ fn bench_insert_coalesce_touching_or_overlapping(b: &mut Bencher) { #[bench] fn bench_overlaps(b: &mut Bencher) { let map = build_identity_map(REPEAT); - b.iter(|| for _ in map.overlapping(&(0..2 * REPEAT)) {}) + b.iter(|| for _ in map.overlapping(&(0..REPEAT)) {}) } #[bench] fn bench_iter(b: &mut Bencher) { - b.iter(|| {}) + let map = build_identity_map(REPEAT); + b.iter(|| for _ in map.iter() {}) } #[bench] fn bench_remove_overlapping(b: &mut Bencher) { - b.iter(|| {}) + 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) { - b.iter(|| {}) + let map = build_identity_map(REPEAT); + b.iter(|| { + let mut map = map.clone(); + if let Err(e) = map.cut(&(0..REPEAT)) { + panic!("Failed to cut: {:?}", e) + } + }) } #[bench] fn bench_gaps(b: &mut Bencher) { - b.iter(|| {}) + 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(); + if let Err(e) = map.split_off(Bound::Included(REPEAT / 2)) { + panic!("Failed to split: {:?}", e) + } + }) +} + +#[bench] +fn bench_overlapping_trimmed(b: &mut Bencher) { + let map = build_identity_map(REPEAT); + b.iter(|| for _ in map.overlapping_trimmed(&(1..REPEAT - 1)) {}) } diff --git a/src/range_bounds_map.rs b/src/range_bounds_map.rs index fe70d53..dbfa684 100644 --- a/src/range_bounds_map.rs +++ b/src/range_bounds_map.rs @@ -1412,7 +1412,7 @@ where } /// Moves all elements from `other` into `self` by - /// [`RangeBoundsMap::insert_platonic()`] in acending order, + /// [`RangeBoundsMap::insert_platonic()`] in ascending order, /// leaving `other` empty. /// /// If any of the `RangeBounds` in `other` overlap `self` then