diff --git a/src/algo/algo.go b/src/algo/algo.go index e98ff1d8..74c4ad5a 100644 --- a/src/algo/algo.go +++ b/src/algo/algo.go @@ -329,6 +329,12 @@ func FuzzyMatchV2(caseSensitive bool, normalize bool, forward bool, input util.C return FuzzyMatchV1(caseSensitive, normalize, forward, input, pattern, withPos, slab) } + // Phase 1. Optimized search for ASCII string + idx := asciiFuzzyIndex(&input, pattern, caseSensitive) + if idx < 0 { + return Result{-1, -1, 0}, nil + } + // Reuse pre-allocated integer slice to avoid unnecessary sweeping of garbages offset16 := 0 offset32 := 0 @@ -339,12 +345,6 @@ func FuzzyMatchV2(caseSensitive bool, normalize bool, forward bool, input util.C // Rune array offset32, T := alloc32(offset32, slab, N, false) - // Phase 1. Optimized search for ASCII string - idx := asciiFuzzyIndex(&input, pattern, caseSensitive) - if idx < 0 { - return Result{-1, -1, 0}, nil - } - // Phase 2. Calculate bonus for each point pidx, lastIdx, prevClass := 0, 0, charNonWord input.CopyRunes(T)