您的位置:首页 > Web前端

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

2017-03-06 23:51 281 查看
  以下测量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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐