【记录一个问题】golang中使用sync.Pool反而造成了负优化
摘要:之前有这样的代码:从http收数据后,进行snappy解码: dst := make([]byte, 0, len(httpRequestData)*5) dst, err = snappy.Decode(dst, httpRequestData) 我想,通过sync.Pool,是不是可以优化这里的
阅读全文
【笔记】golang中使用protocol buffers的底层库直接解码二进制数据
摘要:背景 一个简单的代理程序,发现单核QPS达到2万/s左右就上不去了,40%的CPU消耗在pb的decode/encode上面。 于是我想,对于特定的场景,直接从[]byte中取出字段,而不用完全的把整个结构在内存展开,岂不是要快很多。 so, 温习了一些PB二进制格式的知识。 pb的二进制格式: 参
阅读全文
【笔记】对golang的大量小对象的管理真的是无语了……
摘要:业务中有这样一个struct: type bizData struct{ A uint64 B uint64 C int32 D uint32 } 虽然没有实测,但我猜测这样的对齐方式,这个struct占24字节。 业务中用一个map指向这些对象: map[uint64]*bizData 这样的存储
阅读全文