This commit is contained in:
Dirkjan Ochtman 2021-05-18 11:34:01 +02:00
parent b1bd3525a1
commit a2b1b7b726
4 changed files with 15 additions and 15 deletions

View File

@ -1,5 +1,2 @@
[workspace]
members = ["instant-distance", "instant-distance-py"]
[profile.bench]
debug = true

View File

@ -20,7 +20,7 @@ num_cpus = "1.13"
ordered-float = "2.0"
parking_lot = "0.11"
rand = { version = "0.8", features = ["small_rng"] }
rayon = "1.5"
#rayon = "1.5"
serde = { version = "1.0.118", features = ["derive"], optional = true }
serde-big-array = { version = "0.3.1", optional = true }

View File

@ -1,5 +1,5 @@
use bencher::{benchmark_group, benchmark_main, Bencher};
use rand::rngs::{StdRng, ThreadRng};
use rand::rngs::StdRng; //, ThreadRng};
use rand::{Rng, SeedableRng};
use instant_distance::Builder;
@ -8,14 +8,18 @@ benchmark_main!(benches);
benchmark_group!(benches, build_heuristic);
fn build_heuristic(bench: &mut Bencher) {
let seed = ThreadRng::default().gen::<u64>();
let mut rng = StdRng::seed_from_u64(seed);
let points = (0..1024)
//let seed = dbg!(ThreadRng::default().gen::<u64>());
let mut rng = StdRng::seed_from_u64(11823281459843198809); //seed);
let points = (0..512)
.into_iter()
.map(|_| Point(rng.gen(), rng.gen()))
.collect::<Vec<_>>();
bench.iter(|| Builder::default().seed(seed).build_hnsw(points.clone()))
bench.iter(|| {
Builder::default()
.seed(11823281459843198809)
.build_hnsw(points.clone())
})
}
/*

View File

@ -10,7 +10,7 @@ use ordered_float::OrderedFloat;
use parking_lot::{Mutex, RwLock};
use rand::rngs::SmallRng;
use rand::{Rng, SeedableRng};
use rayon::iter::{IndexedParallelIterator, IntoParallelIterator, ParallelIterator};
//use rayon::iter::{IndexedParallelIterator, IntoParallelIterator, ParallelIterator};
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
@ -291,7 +291,7 @@ where
}
let end = range.end;
nodes[range].into_par_iter().for_each(|(_, pid)| {
nodes[range].into_iter().for_each(|(_, pid)| {
let node = zero.as_slice()[*pid].write();
let (mut search, mut insertion) = pool.pop();
let point = &points.as_slice()[*pid];
@ -337,11 +337,10 @@ where
// For layers above the zero layer, make a copy of the current state of the zero layer
// with `nearest` truncated to `M` elements.
if !layer.is_zero() {
let mut upper = Vec::new();
(&zero[..end])
.into_par_iter()
let upper = (&zero[..end])
.into_iter()
.map(|zero| UpperNode::from_zero(&zero.read()))
.collect_into_vec(&mut upper);
.collect();
layers[layer.0 - 1] = upper;
}
}