perf(lib): iterate s.policy.Bots by index to drop per-call heap copy (#1639)

Signed-off-by: jvoisin <julien.voisin@dustri.org>
This commit is contained in:
Julien Voisin
2026-05-28 17:35:14 +02:00
committed by GitHub
parent 63d517c34d
commit 04b3a835cd
5 changed files with 22 additions and 9 deletions
+15 -4
View File
@@ -1,8 +1,6 @@
package policy
import (
"fmt"
"github.com/TecharoHQ/anubis/internal"
"github.com/TecharoHQ/anubis/lib/config"
"github.com/TecharoHQ/anubis/lib/policy/checker"
@@ -13,9 +11,22 @@ type Bot struct {
Challenge *config.ChallengeRules
Weight *config.Weight
Name string
Action config.Rule
// hash caches the result of Hash() when populated at parse time, see ParseConfig
hash string
Action config.Rule
}
// Hash returns a stable identifier for this Bot derived from its Name
// and Rules. When the cached value is present (populated by
// ParseConfig) it is returned directly; otherwise the hash is
// recomputed on demand so callers do not have to know about the cache.
func (b Bot) Hash() string {
return internal.FastHash(fmt.Sprintf("%s::%s", b.Name, b.Rules.Hash()))
if b.hash != "" {
return b.hash
}
var rulesHash string
if b.Rules != nil { // defensive, should never happen
rulesHash = b.Rules.Hash()
}
return internal.FastHash(b.Name + "::" + rulesHash)
}