diff options
| author | Junegunn Choi <junegunn.c@gmail.com> | 2024-04-14 07:52:42 +0900 |
|---|---|---|
| committer | Junegunn Choi <junegunn.c@gmail.com> | 2024-04-14 11:48:44 +0900 |
| commit | e86b81bbf5c55344f4e29060b71eb1ab563296fe (patch) | |
| tree | f062615f53a9e17e284d0170631e377528aa1dc2 /src/util/chars.go | |
| parent | a5447b8b7531dacb49961d3fccc404f634f06709 (diff) | |
| download | fzf-e86b81bbf5c55344f4e29060b71eb1ab563296fe.tar.gz | |
Improve search performance by limiting the search scope
Find the last occurrence of the last character in the pattern and
perform the search algorithm only up to that point.
The effectiveness of this mechanism depends a lot on the shape of the
input and the pattern.
Diffstat (limited to 'src/util/chars.go')
| -rw-r--r-- | src/util/chars.go | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/util/chars.go b/src/util/chars.go index f946da82..f84d365f 100644 --- a/src/util/chars.go +++ b/src/util/chars.go @@ -178,12 +178,12 @@ func (chars *Chars) ToRunes() []rune { return runes } -func (chars *Chars) CopyRunes(dest []rune) { +func (chars *Chars) CopyRunes(dest []rune, from int) { if runes := chars.optionalRunes(); runes != nil { - copy(dest, runes) + copy(dest, runes[from:]) return } - for idx, b := range chars.slice[:len(dest)] { + for idx, b := range chars.slice[from:][:len(dest)] { dest[idx] = rune(b) } } |
