mirror of https://github.com/go-redis/redis.git
commands: reduce memory allocations in ZAdd.
This commit is contained in:
parent
bbfbc5f668
commit
5f85be3173
|
@ -858,9 +858,12 @@ type ZStore struct {
|
|||
}
|
||||
|
||||
func (c *commandable) ZAdd(key string, members ...Z) *IntCmd {
|
||||
args := []string{"ZADD", key}
|
||||
for _, m := range members {
|
||||
args = append(args, formatFloat(m.Score), m.Member)
|
||||
args := make([]string, 2+2*len(members))
|
||||
args[0] = "ZADD"
|
||||
args[1] = key
|
||||
for i, m := range members {
|
||||
args[2+2*i] = formatFloat(m.Score)
|
||||
args[2+2*i+1] = m.Member
|
||||
}
|
||||
cmd := NewIntCmd(args...)
|
||||
c.Process(cmd)
|
||||
|
|
|
@ -267,3 +267,20 @@ func BenchmarkPipeline(b *testing.B) {
|
|||
}
|
||||
})
|
||||
}
|
||||
|
||||
func BenchmarkZAdd(b *testing.B) {
|
||||
client := redis.NewClient(&redis.Options{
|
||||
Addr: redisAddr,
|
||||
})
|
||||
defer client.Close()
|
||||
|
||||
b.ResetTimer()
|
||||
|
||||
b.RunParallel(func(pb *testing.PB) {
|
||||
for pb.Next() {
|
||||
if err := client.ZAdd("key", redis.Z{float64(1), "hello"}).Err(); err != nil {
|
||||
b.Fatal(err)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue