From fe084b6c0f7f185e2189156d4c33b05802ba3259 Mon Sep 17 00:00:00 2001 From: Rui Hu Date: Fri, 29 Nov 2024 17:59:28 -0800 Subject: [PATCH] fixes --- Cargo.toml | 5 +- benches/bench.rs | 81 ++++++++++++-------- benches/bench_critrion.rs | 154 -------------------------------------- 3 files changed, 52 insertions(+), 188 deletions(-) delete mode 100644 benches/bench_critrion.rs diff --git a/Cargo.toml b/Cargo.toml index 4073a3c..44fe7a2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,7 +18,7 @@ num-traits = "0.2" thiserror = "1.0" [[bench]] -name = "bench_critrion" +name = "bench" harness = false [dependencies.serde] @@ -30,4 +30,5 @@ version = "1.0" optional = true [features] -serialize = ["serde", "serde_derive"] \ No newline at end of file +serialize = ["serde", "serde_derive"] + diff --git a/benches/bench.rs b/benches/bench.rs index aecdaf3..e26514f 100644 --- a/benches/bench.rs +++ b/benches/bench.rs @@ -1,18 +1,17 @@ -#![feature(test)] extern crate kdtree; extern crate rand; -extern crate test; +extern crate criterion; + +use criterion::{criterion_group, criterion_main, Criterion}; use kdtree::distance::squared_euclidean; use kdtree::KdTree; -use test::Bencher; fn rand_data() -> ([f64; 3], f64) { rand::random() } -#[bench] -fn bench_add_to_kdtree_with_1k_3d_points(b: &mut Bencher) { +fn bench_add_to_kdtree_with_1k_3d_points(c: &mut Criterion) { let len = 1000usize; let point = rand_data(); let mut points = vec![]; @@ -23,11 +22,12 @@ fn bench_add_to_kdtree_with_1k_3d_points(b: &mut Bencher) { for i in 0..points.len() { kdtree.add(&points[i].0, points[i].1).unwrap(); } - b.iter(|| kdtree.add(&point.0, point.1).unwrap()); + c.bench_function("bench_add_to_kdtree_with_1k_3d_points", |b| { + b.iter(|| kdtree.add(&point.0, point.1).unwrap()); + }); } -#[bench] -fn bench_nearest_from_kdtree_with_1k_3d_points(b: &mut Bencher) { +fn bench_nearest_from_kdtree_with_1k_3d_points(c: &mut Criterion) { let len = 1000usize; let point = rand_data(); let mut points = vec![]; @@ -38,11 +38,12 @@ fn bench_nearest_from_kdtree_with_1k_3d_points(b: &mut Bencher) { for i in 0..points.len() { kdtree.add(&points[i].0, points[i].1).unwrap(); } - b.iter(|| kdtree.nearest(&point.0, 8, &squared_euclidean).unwrap()); + c.bench_function("bench_nearest_from_kdtree_with_1k_3d_points", |b| { + b.iter(|| kdtree.nearest(&point.0, 8, &squared_euclidean).unwrap()); + }); } -#[bench] -fn bench_within_2k_data_01_radius(b: &mut Bencher) { +fn bench_within_2k_data_01_radius(c: &mut Criterion) { let len = 2000usize; let point = rand_data(); let mut points = vec![]; @@ -54,11 +55,12 @@ fn bench_within_2k_data_01_radius(b: &mut Bencher) { kdtree.add(&points[i].0, points[i].1).unwrap(); } - b.iter(|| kdtree.within(&point.0, 0.1, &squared_euclidean).unwrap()); + c.bench_function("bench_within_2k_data_01_radius", |b| { + b.iter(|| kdtree.within(&point.0, 0.1, &squared_euclidean).unwrap()); + }); } -#[bench] -fn bench_within_2k_data_02_radius(b: &mut Bencher) { +fn bench_within_2k_data_02_radius(c: &mut Criterion) { let len = 2000usize; let point = rand_data(); let mut points = vec![]; @@ -69,12 +71,12 @@ fn bench_within_2k_data_02_radius(b: &mut Bencher) { for i in 0..points.len() { kdtree.add(&points[i].0, points[i].1).unwrap(); } - - b.iter(|| kdtree.within(&point.0, 0.2, &squared_euclidean).unwrap()); + c.bench_function("bench_within_2k_data_02_radius", |b| { + b.iter(|| kdtree.within(&point.0, 0.2, &squared_euclidean).unwrap()); + }); } -#[bench] -fn bench_within_unsorted_2k_data_01_radius(b: &mut Bencher) { +fn bench_within_unsorted_2k_data_01_radius(c: &mut Criterion) { let len = 2000usize; let point = rand_data(); let mut points = vec![]; @@ -85,12 +87,12 @@ fn bench_within_unsorted_2k_data_01_radius(b: &mut Bencher) { for i in 0..points.len() { kdtree.add(&points[i].0, points[i].1).unwrap(); } - - b.iter(|| kdtree.within_unsorted(&point.0, 0.1, &squared_euclidean).unwrap()); + c.bench_function("bench_within_unsorted_2k_data_01_radius", |b| { + b.iter(|| kdtree.within_unsorted(&point.0, 0.1, &squared_euclidean).unwrap()); + }); } -#[bench] -fn bench_within_unsorted_2k_data_02_radius(b: &mut Bencher) { +fn bench_within_unsorted_2k_data_02_radius(c: &mut Criterion) { let len = 2000usize; let point = rand_data(); let mut points = vec![]; @@ -101,12 +103,12 @@ fn bench_within_unsorted_2k_data_02_radius(b: &mut Bencher) { for i in 0..points.len() { kdtree.add(&points[i].0, points[i].1).unwrap(); } - - b.iter(|| kdtree.within_unsorted(&point.0, 0.2, &squared_euclidean).unwrap()); + c.bench_function("bench_within_unsorted_2k_data_02_radius", |b| { + b.iter(|| kdtree.within_unsorted(&point.0, 0.2, &squared_euclidean).unwrap()); + }); } -#[bench] -fn bench_within_count_2k_data_01_radius(b: &mut Bencher) { +fn bench_within_count_2k_data_01_radius(c: &mut Criterion) { let len = 2000usize; let point = rand_data(); let mut points = vec![]; @@ -117,12 +119,12 @@ fn bench_within_count_2k_data_01_radius(b: &mut Bencher) { for i in 0..points.len() { kdtree.add(&points[i].0, points[i].1).unwrap(); } - - b.iter(|| kdtree.within_count(&point.0, 0.1, &squared_euclidean).unwrap()); + c.bench_function("bench_within_count_2k_data_01_radius", |b| { + b.iter(|| kdtree.within_count(&point.0, 0.1, &squared_euclidean).unwrap()); + }); } -#[bench] -fn bench_within_count_2k_data_02_radius(b: &mut Bencher) { +fn bench_within_count_2k_data_02_radius(c: &mut Criterion) { let len = 2000usize; let point = rand_data(); let mut points = vec![]; @@ -133,6 +135,21 @@ fn bench_within_count_2k_data_02_radius(b: &mut Bencher) { for i in 0..points.len() { kdtree.add(&points[i].0, points[i].1).unwrap(); } - - b.iter(|| kdtree.within_count(&point.0, 0.2, &squared_euclidean).unwrap()); + c.bench_function("bench_within_count_2k_data_02_radius", |b| { + b.iter(|| kdtree.within_count(&point.0, 0.2, &squared_euclidean).unwrap()); + }); } + +criterion_group!( + benches, + bench_add_to_kdtree_with_1k_3d_points, + bench_nearest_from_kdtree_with_1k_3d_points, + bench_within_2k_data_01_radius, + bench_within_2k_data_02_radius, + bench_within_unsorted_2k_data_01_radius, + bench_within_unsorted_2k_data_02_radius, + bench_within_count_2k_data_01_radius, + bench_within_count_2k_data_02_radius, +); + +criterion_main!(benches); diff --git a/benches/bench_critrion.rs b/benches/bench_critrion.rs deleted file mode 100644 index 2dfdd27..0000000 --- a/benches/bench_critrion.rs +++ /dev/null @@ -1,154 +0,0 @@ -extern crate kdtree; -extern crate rand; - -extern crate criterion; - -use criterion::{criterion_group, criterion_main, Criterion}; -use kdtree::distance::squared_euclidean; -use kdtree::KdTree; - -fn rand_data() -> ([f64; 3], f64) { - rand::random() -} - -fn bench_add_to_kdtree_with_1k_3d_points(c: &mut Criterion) { - let len = 1000usize; - let point = rand_data(); - let mut points = vec![]; - let mut kdtree = KdTree::with_capacity(3, 16); - for _ in 0..len { - points.push(rand_data()); - } - for i in 0..points.len() { - kdtree.add(&points[i].0, points[i].1).unwrap(); - } - c.bench_function("bench_add_to_kdtree_with_1k_3d_points", |b| { - b.iter(|| kdtree.add(&point.0, point.1).unwrap()); - }); -} -fn bench_nearest_from_kdtree_with_1k_3d_points(c: &mut Criterion) { - let len = 1000usize; - let point = rand_data(); - let mut points = vec![]; - let mut kdtree = KdTree::with_capacity(3, 16); - for _ in 0..len { - points.push(rand_data()); - } - for i in 0..points.len() { - kdtree.add(&points[i].0, points[i].1).unwrap(); - } - c.bench_function("bench_nearest_from_kdtree_with_1k_3d_points", |b| { - b.iter(|| kdtree.nearest(&point.0, 8, &squared_euclidean).unwrap()); - }); -} - -fn bench_within_2k_data_01_radius(c: &mut Criterion) { - let len = 2000usize; - let point = rand_data(); - let mut points = vec![]; - let mut kdtree = KdTree::with_capacity(3, 16); - for _ in 0..len { - points.push(rand_data()); - } - for i in 0..points.len() { - kdtree.add(&points[i].0, points[i].1).unwrap(); - } - - c.bench_function("bench_within_2k_data_01_radius", |b| { - b.iter(|| kdtree.within(&point.0, 0.1, &squared_euclidean).unwrap()); - }); -} - -fn bench_within_2k_data_02_radius(c: &mut Criterion) { - let len = 2000usize; - let point = rand_data(); - let mut points = vec![]; - let mut kdtree = KdTree::with_capacity(3, 16); - for _ in 0..len { - points.push(rand_data()); - } - for i in 0..points.len() { - kdtree.add(&points[i].0, points[i].1).unwrap(); - } - c.bench_function("bench_within_2k_data_02_radius", |b| { - b.iter(|| kdtree.within(&point.0, 0.2, &squared_euclidean).unwrap()); - }); -} - -fn bench_within_unsorted_2k_data_01_radius(c: &mut Criterion) { - let len = 2000usize; - let point = rand_data(); - let mut points = vec![]; - let mut kdtree = KdTree::with_capacity(3, 16); - for _ in 0..len { - points.push(rand_data()); - } - for i in 0..points.len() { - kdtree.add(&points[i].0, points[i].1).unwrap(); - } - c.bench_function("bench_within_unsorted_2k_data_01_radius", |b| { - b.iter(|| kdtree.within_unsorted(&point.0, 0.1, &squared_euclidean).unwrap()); - }); -} - -fn bench_within_unsorted_2k_data_02_radius(c: &mut Criterion) { - let len = 2000usize; - let point = rand_data(); - let mut points = vec![]; - let mut kdtree = KdTree::with_capacity(3, 16); - for _ in 0..len { - points.push(rand_data()); - } - for i in 0..points.len() { - kdtree.add(&points[i].0, points[i].1).unwrap(); - } - c.bench_function("bench_within_unsorted_2k_data_02_radius", |b| { - b.iter(|| kdtree.within_unsorted(&point.0, 0.2, &squared_euclidean).unwrap()); - }); -} - -fn bench_within_count_2k_data_01_radius(c: &mut Criterion) { - let len = 2000usize; - let point = rand_data(); - let mut points = vec![]; - let mut kdtree = KdTree::with_capacity(3, 16); - for _ in 0..len { - points.push(rand_data()); - } - for i in 0..points.len() { - kdtree.add(&points[i].0, points[i].1).unwrap(); - } - c.bench_function("bench_within_count_2k_data_01_radius", |b| { - b.iter(|| kdtree.within_count(&point.0, 0.1, &squared_euclidean).unwrap()); - }); -} - -fn bench_within_count_2k_data_02_radius(c: &mut Criterion) { - let len = 2000usize; - let point = rand_data(); - let mut points = vec![]; - let mut kdtree = KdTree::with_capacity(3, 16); - for _ in 0..len { - points.push(rand_data()); - } - for i in 0..points.len() { - kdtree.add(&points[i].0, points[i].1).unwrap(); - } - c.bench_function("bench_within_count_2k_data_02_radius", |b| { - b.iter(|| kdtree.within_count(&point.0, 0.2, &squared_euclidean).unwrap()); - }); -} - -criterion_group!( - benches, - bench_add_to_kdtree_with_1k_3d_points, - bench_nearest_from_kdtree_with_1k_3d_points, - bench_within_2k_data_01_radius, - bench_within_2k_data_02_radius, - bench_within_unsorted_2k_data_01_radius, - bench_within_unsorted_2k_data_02_radius, - bench_within_count_2k_data_01_radius, - bench_within_count_2k_data_02_radius, -); - -criterion_main!(benches);