From 1e718021dbe294b8fc3d20848295e98b0c5abd6a Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Mon, 10 Jan 2022 15:38:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/utils/expires/list.go | 6 +++++- internal/utils/expires/list_test.go | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/internal/utils/expires/list.go b/internal/utils/expires/list.go index 560e751..c61caff 100644 --- a/internal/utils/expires/list.go +++ b/internal/utils/expires/list.go @@ -63,7 +63,11 @@ func (this *List) Remove(itemId int64) { func (this *List) GC(timestamp int64, callback func(itemId int64)) { this.locker.Lock() - itemMap := this.gcItems(timestamp) + var itemMap = this.gcItems(timestamp) + if len(itemMap) == 0 { + this.locker.Unlock() + return + } this.locker.Unlock() if callback != nil { diff --git a/internal/utils/expires/list_test.go b/internal/utils/expires/list_test.go index e491ec4..cb6a2b7 100644 --- a/internal/utils/expires/list_test.go +++ b/internal/utils/expires/list_test.go @@ -165,3 +165,21 @@ func Benchmark_Map_Uint64(b *testing.B) { } } } + +func BenchmarkList_GC(b *testing.B) { + runtime.GOMAXPROCS(1) + + var lists = []*List{} + + for i := 0; i < 100; i++ { + lists = append(lists, NewList()) + } + + var timestamp = time.Now().Unix() + + for i := 0; i < b.N; i++ { + for _, list := range lists { + list.GC(timestamp, nil) + } + } +}