optimisation: remove the leaves first to minimize maxEndOf recalculations

This commit is contained in:
Alexey Kudravtsev
2017-02-13 14:36:48 +03:00
parent 8f6b3dcca8
commit 18d4a2e562
@@ -192,7 +192,9 @@ public class RangeMarkerTree<T extends RangeMarkerEx> extends IntervalTreeImpl<T
checkMax(false);
if (!affected.isEmpty()) {
for (IntervalNode<T> node : affected) {
// reverse direction to visit leaves first - it's cheaper to compute maxEndOf for them first
for (int i = affected.size() - 1; i >= 0; i--) {
IntervalNode<T> node = affected.get(i);
// assumption: interval.getEndOffset() will never be accessed during remove()
int startOffset = node.intervalStart();
int endOffset = node.intervalEnd();