diff options
| author | Jason Felice <jason.m.felice@gmail.com> | 2021-03-08 15:26:38 -0500 |
|---|---|---|
| committer | Jason Felice <jason.m.felice@gmail.com> | 2021-03-08 16:55:43 -0500 |
| commit | c9be6730f6be1f9baa14ff8d946f58b0b554dcff (patch) | |
| tree | db8475be2d4e94988386e6e5bfb46552f6ec1854 /src | |
| parent | da80a8cf6ae3f2993d86c2c328b099078e037c96 (diff) | |
Binary search for first range to change
Diffstat (limited to 'src')
| -rw-r--r-- | src/changes.hh | 6 |
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> |
