summaryrefslogtreecommitdiff
path: root/src/changes.hh
diff options
context:
space:
mode:
authorJason Felice <jason.m.felice@gmail.com>2021-03-08 15:26:38 -0500
committerJason Felice <jason.m.felice@gmail.com>2021-03-08 16:55:43 -0500
commitc9be6730f6be1f9baa14ff8d946f58b0b554dcff (patch)
treedb8475be2d4e94988386e6e5bfb46552f6ec1854 /src/changes.hh
parentda80a8cf6ae3f2993d86c2c328b099078e037c96 (diff)
Binary search for first range to change
Diffstat (limited to 'src/changes.hh')
-rw-r--r--src/changes.hh6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/changes.hh b/src/changes.hh
index 5ebb3ded..9d0328d4 100644
--- a/src/changes.hh
+++ b/src/changes.hh
@@ -53,8 +53,10 @@ void update_forward(ConstArrayView<Buffer::Change> changes, RangeContainer& rang
changes_tracker.update(*it++);
};
- for (auto& range : ranges)
- update_range(changes_tracker, range, advance_while_relevant);
+ auto range_it = std::lower_bound(ranges.begin(), ranges.end(), changes.front(),
+ [](auto& range, const Buffer::Change& change) { return get_last(range) < change.begin; });
+ for (auto end = ranges.end(); range_it != end; ++range_it)
+ update_range(changes_tracker, *range_it, advance_while_relevant);
}
template<typename RangeContainer>