使用空struct{}代替bool节约内存

This commit is contained in:
刘祥超
2021-12-09 12:07:46 +08:00
parent d3169eaea5
commit 853e4fd0f0
15 changed files with 126 additions and 63 deletions

View File

@@ -1,13 +1,14 @@
package expires
import (
"github.com/TeaOSLab/EdgeNode/internal/zero"
"sync"
)
type ItemMap = map[int64]bool
type ItemMap = map[int64]zero.Zero
type List struct {
expireMap map[int64]ItemMap // expires timestamp => map[id]bool
expireMap map[int64]ItemMap // expires timestamp => map[id]ItemMap
itemsMap map[int64]int64 // itemId => timestamp
locker sync.Mutex
@@ -38,10 +39,10 @@ func (this *List) Add(itemId int64, expiresAt int64) {
expireItemMap, ok := this.expireMap[expiresAt]
if ok {
expireItemMap[itemId] = true
expireItemMap[itemId] = zero.New()
} else {
expireItemMap = ItemMap{
itemId: true,
itemId: zero.New(),
}
this.expireMap[expiresAt] = expireItemMap
}

View File

@@ -4,6 +4,7 @@ package expires
import (
"github.com/TeaOSLab/EdgeNode/internal/goman"
"github.com/TeaOSLab/EdgeNode/internal/zero"
"sync"
"time"
)
@@ -11,14 +12,14 @@ import (
var SharedManager = NewManager()
type Manager struct {
listMap map[*List]bool
listMap map[*List]zero.Zero
locker sync.Mutex
ticker *time.Ticker
}
func NewManager() *Manager {
var manager = &Manager{
listMap: map[*List]bool{},
listMap: map[*List]zero.Zero{},
ticker: time.NewTicker(1 * time.Second),
}
goman.New(func() {
@@ -60,7 +61,7 @@ func (this *Manager) init() {
func (this *Manager) Add(list *List) {
this.locker.Lock()
this.listMap[list] = true
this.listMap[list] = zero.New()
this.locker.Unlock()
}