mirror of
https://github.com/fluencelabs/tendermint
synced 2025-04-25 06:42:16 +00:00
cmap: Remove defers (#2210)
All functions in cmap have just one code path. Thus there is not a reason to use defer statements.
This commit is contained in:
parent
ed08ae7321
commit
d0dcb1cde1
@ -16,58 +16,60 @@ func NewCMap() *CMap {
|
||||
|
||||
func (cm *CMap) Set(key string, value interface{}) {
|
||||
cm.l.Lock()
|
||||
defer cm.l.Unlock()
|
||||
cm.m[key] = value
|
||||
cm.l.Unlock()
|
||||
}
|
||||
|
||||
func (cm *CMap) Get(key string) interface{} {
|
||||
cm.l.Lock()
|
||||
defer cm.l.Unlock()
|
||||
return cm.m[key]
|
||||
val := cm.m[key]
|
||||
cm.l.Unlock()
|
||||
return val
|
||||
}
|
||||
|
||||
func (cm *CMap) Has(key string) bool {
|
||||
cm.l.Lock()
|
||||
defer cm.l.Unlock()
|
||||
_, ok := cm.m[key]
|
||||
cm.l.Unlock()
|
||||
return ok
|
||||
}
|
||||
|
||||
func (cm *CMap) Delete(key string) {
|
||||
cm.l.Lock()
|
||||
defer cm.l.Unlock()
|
||||
delete(cm.m, key)
|
||||
cm.l.Unlock()
|
||||
}
|
||||
|
||||
func (cm *CMap) Size() int {
|
||||
cm.l.Lock()
|
||||
defer cm.l.Unlock()
|
||||
return len(cm.m)
|
||||
size := len(cm.m)
|
||||
cm.l.Unlock()
|
||||
return size
|
||||
}
|
||||
|
||||
func (cm *CMap) Clear() {
|
||||
cm.l.Lock()
|
||||
defer cm.l.Unlock()
|
||||
cm.m = make(map[string]interface{})
|
||||
cm.l.Unlock()
|
||||
}
|
||||
|
||||
func (cm *CMap) Keys() []string {
|
||||
cm.l.Lock()
|
||||
defer cm.l.Unlock()
|
||||
|
||||
keys := []string{}
|
||||
for k := range cm.m {
|
||||
keys = append(keys, k)
|
||||
}
|
||||
cm.l.Unlock()
|
||||
return keys
|
||||
}
|
||||
|
||||
func (cm *CMap) Values() []interface{} {
|
||||
cm.l.Lock()
|
||||
defer cm.l.Unlock()
|
||||
items := []interface{}{}
|
||||
for _, v := range cm.m {
|
||||
items = append(items, v)
|
||||
}
|
||||
cm.l.Unlock()
|
||||
return items
|
||||
}
|
||||
|
@ -51,3 +51,14 @@ func TestContains(t *testing.T) {
|
||||
assert.False(t, cmap.Has("key2"))
|
||||
assert.Nil(t, cmap.Get("key2"))
|
||||
}
|
||||
|
||||
func BenchmarkCMapHas(b *testing.B) {
|
||||
m := NewCMap()
|
||||
for i := 0; i < 1000; i++ {
|
||||
m.Set(string(i), i)
|
||||
}
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
m.Has(string(i))
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user