clientv3/concurrency: preallocate slice in stm

This commit is contained in:
Gyu-Ho Lee
2016-05-19 14:42:19 -07:00
parent 8c17674cda
commit fa1e40c120

View File

@@ -139,11 +139,12 @@ func (s *stm) commit() *v3.TxnResponse {
}
// cmps guards the txn from updates to read set
func (s *stm) cmps() (cmps []v3.Cmp) {
func (s *stm) cmps() []v3.Cmp {
cmps := make([]v3.Cmp, 0, len(s.rset))
for k, rk := range s.rset {
cmps = append(cmps, isKeyCurrent(k, rk))
}
return
return cmps
}
func (s *stm) fetch(key string) *v3.GetResponse {
@@ -159,11 +160,12 @@ func (s *stm) fetch(key string) *v3.GetResponse {
}
// puts is the list of ops for all pending writes
func (s *stm) puts() (puts []v3.Op) {
func (s *stm) puts() []v3.Op {
puts := make([]v3.Op, 0, len(s.wset))
for _, v := range s.wset {
puts = append(puts, v.op)
}
return
return puts
}
func (s *stm) reset() {
@@ -201,12 +203,14 @@ func (s *stmSerializable) Rev(key string) int64 {
return s.stm.Rev(key)
}
func (s *stmSerializable) gets() (keys []string, ops []v3.Op) {
func (s *stmSerializable) gets() ([]string, []v3.Op) {
keys := make([]string, 0, len(s.rset))
ops := make([]v3.Op, 0, len(s.rset))
for k := range s.rset {
keys = append(keys, k)
ops = append(ops, v3.OpGet(k))
}
return
return keys, ops
}
func (s *stmSerializable) commit() *v3.TxnResponse {