-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Description
Building a triangulation (for instance Triangulation for points on a sphere in dim 5, where every insertion is outside the convex hull) spends a lot of time in TDS operations, even when the dimension is fixed at compile-time (for dynamic dimension, see #8044). This issue is here to list ideas to speed it up (the list may evolve).
- Use TDS_full_cell_mirror_storage_policy by default (except maybe for dynamic dimension?) (mentioned in [[no_unique_address]] to compact Triangulation_ds_full_cell #8045)
- Replace
queue<T>bystack<T>, or evenstack<T,vector<T>>(most places don't seem to care about the order) - clear_visited_marks: instead of walking through the graph again, maybe we could store the cells in a vector when we mark them, so it is easy to clear them all afterwards?
- we spend quite a bit of time testing if vertices are infinite, try to avoid calling is_infinite on a cell when we could find out by testing one specific vertex (Outside_convex_hull_traversal_predicate?). Investigate if we could force the infinite vertex to be always in first position in the vertices of a cell, to limit the required tests. (mentioned in Use 'if' rather than % #8027)
- insert_in_tagged_hole: we spend a lot of time around
while (!is_boundary_facet(rot))androtate_rotor. A comment says this is the "easy" way, so maybe there is a faster way?