初次基准测试
可以看到,cstruct-go比gogoprotobuf慢600+ns
于是,github上,看了下gogoprotobuf代码
发现,主要区别在于对slice的用法上
append vs make(,fixedsize)
对照下,发现
gogoprotobuf对slice做的2件事:
- 在encode只做了一次make内存分配
- 在decode对每个slice类型,只做一次make内存分配
cstruct-go对slice操作:
- 每次均是append操作
于是,仿照gogoprotobuf对cstruct-go做了对应的调整。