It should be benched, but those boost::unordered_set should probably be replaced by something more efficient:
boost::flat_set based on small_vector (see benchmarks: that depends on the number of queries compared to the number of insertions),
or pmr::unordered_set (from Boost>=1.60 or C++17) with a with its allocator constructed from a pmr::monotonic_buffer_resource (from Boost>=1.60 or C++17).
For the efficiency of
incident_cells_threadsafe
,incident_vertices_threadsafe
, and so on, I think we should modify theboost::unordered_set
here:https://github.com/CGAL/cgal/blob/5a02f47c56a4d2084e20688bb2817e2017b363ef/TDS_3/include/CGAL/Triangulation_data_structure_3.h#L827-L834 and here: https://github.com/CGAL/cgal/blob/5a02f47c56a4d2084e20688bb2817e2017b363ef/TDS_3/include/CGAL/Triangulation_data_structure_3.h#L995-L1000
It should be benched, but those
boost::unordered_set
should probably be replaced by something more efficient:boost::flat_set
based onsmall_vector
(see benchmarks: that depends on the number of queries compared to the number of insertions),pmr::unordered_set
(from Boost>=1.60 or C++17) with a with its allocator constructed from apmr::monotonic_buffer_resource
(from Boost>=1.60 or C++17).