Open graphitemaster opened 2 years ago
I am surprised to hear this. The cy::Heap
class was designed to allow random access and updates. I did not put much effort into optimizing it. I would expect the standard C++ max heap functions in <algorithm>
to be better optimized.
I find it a bit strange that there is an implementation of a generic heap data structure for the weighted sample elimination algorithm but the point cloud data structure used for nearest neighbor searches uses the standard C++
<algorithm>
providedmake_heap
,push_heap
, andpop_heap
functions. It's especially strange (to me) since the commit that introduced the weighted sample elimination also introduced this max heap data structure. I assume the intent was to use it for both algorithms.With some local testing here, converting the point cloud data structure to using cyHeap by creating a side-channel heap structure is slightly faster than using the standard C++ max heap algorithms in
<algorithm>
.