【记录一个问题】golang中使用sync.Pool反而造成了负优化

之前有这样的代码:从http收数据后,进行snappy解码:

dst := make([]byte, 0, len(httpRequestData)*5)
dst, err = snappy.Decode(dst, httpRequestData)

我想,通过sync.Pool,是不是可以优化这里的内存分配?于是我改成这样:

var pool = sync.Pool{
        New: func() interface{} {
                return make([]byte, 1024*32)
        },
}

func xxx(){
	dstTemp := pool.Get().([]byte)
	dst := dstTemp[0:0]
	defer pool.Put(dstTemp)
	dst, err = snappy.Decode(dst, bufRaw)
}

上面的代码造成了负优化:性能下降27.5%

还没想明白为什么。

原文地址:https://www.cnblogs.com/ahfuzhang/p/15364811.html