You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Both Internal and C backends use kd-tree for connection processing. Currently, they rebuild the tree every time connections are scanned. If memory permits keeping the tree between cycles, a more efficient approach is:
For each entry, search up the tree for the nearest node that still contains the (possibly new) location. This could terminate with the current leaf node itself, if there has been no change. Then insert the entry back in the tree by searching for the correct leaf under the selected node.
For each tree node (in depth-first order), if it's branches have become imbalanced, rebuild the subtree starting at that node.
Another possible optimization is to keep all the leaf buckets in a single vector. This equates to sorting sublists in place. The nodes themselves will, of course, require a separate structure.
The text was updated successfully, but these errors were encountered:
Both Internal and C backends use kd-tree for connection processing. Currently, they rebuild the tree every time connections are scanned. If memory permits keeping the tree between cycles, a more efficient approach is:
Another possible optimization is to keep all the leaf buckets in a single vector. This equates to sorting sublists in place. The nodes themselves will, of course, require a separate structure.
The text was updated successfully, but these errors were encountered: