From c9be6730f6be1f9baa14ff8d946f58b0b554dcff Mon Sep 17 00:00:00 2001 From: Jason Felice Date: Mon, 8 Mar 2021 15:26:38 -0500 Subject: [PATCH] Binary search for first range to change --- src/changes.hh | 6 ++++-- 1 file 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 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