瀏覽代碼

simplify buffer allocation

Darien Raymond 7 年之前
父節點
當前提交
c49b93b39e
共有 1 個文件被更改,包括 6 次插入4 次删除
  1. 6 4
      common/buf/writer.go

+ 6 - 4
common/buf/writer.go

@@ -29,17 +29,19 @@ func (w *BufferToBytesWriter) WriteMultiBuffer(mb MultiBuffer) error {
 		return WriteAllBytes(w.Writer, mb[0].Bytes())
 	}
 
+	if cap(w.cache) < len(mb) {
+		w.cache = make([][]byte, 0, len(mb))
+	}
+
 	bs := w.cache
 	for _, b := range mb {
 		bs = append(bs, b.Bytes())
 	}
-	w.cache = bs
 
 	defer func() {
-		for idx := range w.cache {
-			w.cache[idx] = nil
+		for idx := range bs {
+			bs[idx] = nil
 		}
-		w.cache = w.cache[:0]
 	}()
 
 	nb := net.Buffers(bs)