测试Protobuffer的定义格式对其时间和空间的影响

来源:互联网 发布:little mac 唇膏 编辑:程序博客网 时间:2024/04/28 01:19

  以下测量Protobuffer格式的A命令转换为std::string的的字节个数:

  • 添加图片资源

  a)AddLayer:108
  b)AddSource:209
  c)MoveLayer:44
  d)DeleteLayer:48

  • 清屏:36

  但是实际应用时是以B命令接收,然后转换为C命令,这个C命令再拆分为A命令,整体下来接收到的字节较多,数据如下:

  • 添加图片资源

  a)AddLayer+AddSource:410
  b)MoveLayer:150
  c)DeleteLayer:153

  • 清屏:123

  由以上两者的对比得出结论:命令的两次嵌套带来了将近100个字节的开销。显然,嵌套的层数越少,转换出字符串的字节数越小。另外,搜索资料可知,Protobuffer在包含repeated元素时,时间开销会较多,因为涉及到repeated元素个数到达一定值时的内存重新分配。所以,从时间和空间的角度来说,对Protobuffer的定义有两个建议,一是尽量少的嵌套,以减少空间开销(个人的理解,Protobuffer的定义应该扁平化);二是repeated元素不应过多,以减少时间开销。

 


参考资料:
http://blog.csdn.net/yang3wei/article/details/46360099

0 0
原创粉丝点击