mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 21:27:45 +00:00
AK: Split up CircularBuffer::find_copy_in_seekback
The "operation modes" of this function have very different focuses, and trying to combine both in a way where we share the most amount of code probably results in the worst performance. Instead, split up the function into "existing distances" and "no existing distances" so that we can optimize either case separately.
This commit is contained in:
parent
9e82ad758e
commit
046a9faeb3
4 changed files with 91 additions and 53 deletions
|
@ -72,7 +72,8 @@ public:
|
|||
/// This searches the seekback buffer (between read head and limit) for occurrences where it matches the next `length` bytes from the read buffer.
|
||||
/// Supplying any hints will only consider those distances, in case existing offsets need to be validated.
|
||||
/// Note that, since we only start searching at the read head, the length between read head and write head is excluded from the distance.
|
||||
ErrorOr<Vector<Match>> find_copy_in_seekback(size_t maximum_length, size_t minimum_length = 2, Optional<Vector<size_t> const&> distance_hints = {}) const;
|
||||
ErrorOr<Vector<Match>> find_copy_in_seekback(size_t maximum_length, size_t minimum_length = 2) const;
|
||||
ErrorOr<Vector<Match>> find_copy_in_seekback(Vector<size_t> const& distances, size_t maximum_length, size_t minimum_length = 2) const;
|
||||
|
||||
private:
|
||||
SearchableCircularBuffer(ByteBuffer);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue