Fill in significant function benches

This commit is contained in:
Mikolaj Figurski
2023-01-12 15:57:26 -05:00
parent 38ffd6801f
commit 601476f855
2 changed files with 37 additions and 8 deletions
+36 -7
View File
@@ -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, Range<usize>, 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)) {})
}
+1 -1
View File
@@ -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