Inline function calls in tight loops
By only using leaf functions
This commit is contained in:
parent
babf877fd6
commit
0e0de29b87
@ -22,13 +22,6 @@ func indexAt(index int, max int, forward bool) int {
|
|||||||
return max - index - 1
|
return max - index - 1
|
||||||
}
|
}
|
||||||
|
|
||||||
func runeAt(text util.Chars, index int, max int, forward bool) rune {
|
|
||||||
if forward {
|
|
||||||
return text.Get(index)
|
|
||||||
}
|
|
||||||
return text.Get(max - index - 1)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Result conatins the results of running a match function.
|
// Result conatins the results of running a match function.
|
||||||
type Result struct {
|
type Result struct {
|
||||||
Start int32
|
Start int32
|
||||||
@ -136,7 +129,7 @@ func FuzzyMatch(caseSensitive bool, forward bool, text util.Chars, pattern []run
|
|||||||
lenPattern := len(pattern)
|
lenPattern := len(pattern)
|
||||||
|
|
||||||
for index := 0; index < lenRunes; index++ {
|
for index := 0; index < lenRunes; index++ {
|
||||||
char := runeAt(text, index, lenRunes, forward)
|
char := text.Get(indexAt(index, lenRunes, forward))
|
||||||
// This is considerably faster than blindly applying strings.ToLower to the
|
// This is considerably faster than blindly applying strings.ToLower to the
|
||||||
// whole string
|
// whole string
|
||||||
if !caseSensitive {
|
if !caseSensitive {
|
||||||
@ -164,7 +157,7 @@ func FuzzyMatch(caseSensitive bool, forward bool, text util.Chars, pattern []run
|
|||||||
if sidx >= 0 && eidx >= 0 {
|
if sidx >= 0 && eidx >= 0 {
|
||||||
pidx--
|
pidx--
|
||||||
for index := eidx - 1; index >= sidx; index-- {
|
for index := eidx - 1; index >= sidx; index-- {
|
||||||
char := runeAt(text, index, lenRunes, forward)
|
char := text.Get(indexAt(index, lenRunes, forward))
|
||||||
if !caseSensitive {
|
if !caseSensitive {
|
||||||
if char >= 'A' && char <= 'Z' {
|
if char >= 'A' && char <= 'Z' {
|
||||||
char += 32
|
char += 32
|
||||||
@ -215,7 +208,7 @@ func ExactMatchNaive(caseSensitive bool, forward bool, text util.Chars, pattern
|
|||||||
|
|
||||||
pidx := 0
|
pidx := 0
|
||||||
for index := 0; index < lenRunes; index++ {
|
for index := 0; index < lenRunes; index++ {
|
||||||
char := runeAt(text, index, lenRunes, forward)
|
char := text.Get(indexAt(index, lenRunes, forward))
|
||||||
if !caseSensitive {
|
if !caseSensitive {
|
||||||
if char >= 'A' && char <= 'Z' {
|
if char >= 'A' && char <= 'Z' {
|
||||||
char += 32
|
char += 32
|
||||||
|
Loading…
Reference in New Issue
Block a user