之前有这样的代码:从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%
还没想明白为什么。