From f7997ab5c46bbc16528982ff9e66c92dbe156f76 Mon Sep 17 00:00:00 2001 From: xfy Date: Thu, 4 Jun 2026 10:45:41 +0800 Subject: [PATCH] perf(security): eliminate fnv.New64a() allocation in SlidingWindowLimiter.getBucket Same inline FNV-1a optimization as RateLimiter. --- internal/middleware/security/sliding_window.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/internal/middleware/security/sliding_window.go b/internal/middleware/security/sliding_window.go index bfc014f..b19a778 100644 --- a/internal/middleware/security/sliding_window.go +++ b/internal/middleware/security/sliding_window.go @@ -20,9 +20,10 @@ package security import ( - "hash/fnv" "sync" "time" + + "rua.plus/lolly/internal/hash" ) // limiterBucket 分段锁桶,每个桶持有部分键的计数器。 @@ -59,9 +60,7 @@ type SlidingWindowLimiter struct { // 返回值: // - *limiterBucket: 对应的桶 func (s *SlidingWindowLimiter) getBucket(key string) *limiterBucket { - h := fnv.New64a() - h.Write([]byte(key)) - return s.buckets[h.Sum64()%16] + return s.buckets[hash.FNV64a(key)%16] } // windowCounter 滑动窗口计数器。