Correct testPoint for organized nearest neighbor search #2198
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I was seeing occasional spikes in the computation time for organized kNN search. This is due to the search box not being updated when adding the k-th neighbor and subsequent iterations of the do-while loop in kNN search never trigger the else case in
testPoint
. This way we iterate over way too many points during search.The plot below shows a histogram of the log10 computation time before (top) and after (bottom) the fix for
k=20
for every point on a particularly problematic point cloud. Note the grouping around -3 on the before plot. On this point cloud, this reduces the average computation time of nearest neighbor searches by a factor 20. On other clouds I see around a factor 2 improvement.