From 3acbff715243391a5363bddb03d8ea39c8afe92d Mon Sep 17 00:00:00 2001 From: rabbitstack Date: Wed, 28 May 2025 19:34:57 +0200 Subject: [PATCH] perf: Speed up the `wildcard` function Avoid unnecessary conversion to rune slice to alleviate the pressure on the heap allocator. --- pkg/util/wildcard/wildcard.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pkg/util/wildcard/wildcard.go b/pkg/util/wildcard/wildcard.go index a8d092eff..86d88db51 100644 --- a/pkg/util/wildcard/wildcard.go +++ b/pkg/util/wildcard/wildcard.go @@ -27,27 +27,27 @@ func Match(pattern, name string) (matched bool) { if pattern == "*" { return true } - // Does extended wildcard '*' and '?' match. - return deepMatchRune([]rune(name), []rune(pattern), false) + // Does extended wildcard '*' and '?' match? + return deepMatchRune(name, pattern, false) } -func deepMatchRune(str, pattern []rune, simple bool) bool { +func deepMatchRune(s, pattern string, simple bool) bool { for len(pattern) > 0 { switch pattern[0] { default: - if len(str) == 0 || str[0] != pattern[0] { + if len(s) == 0 || s[0] != pattern[0] { return false } case '?': - if len(str) == 0 && !simple { + if len(s) == 0 && !simple { return false } case '*': - return deepMatchRune(str, pattern[1:], simple) || - (len(str) > 0 && deepMatchRune(str[1:], pattern, simple)) + return deepMatchRune(s, pattern[1:], simple) || + (len(s) > 0 && deepMatchRune(s[1:], pattern, simple)) } - str = str[1:] + s = s[1:] pattern = pattern[1:] } - return len(str) == 0 && len(pattern) == 0 + return len(s) == 0 && len(pattern) == 0 }