zoukankan      html  css  js  c++  java
  • 测试Protobuffer的定义格式对其时间和空间的影响

      测试Protobuffer格式的A命令转换为std::string的的字节个数,分别测试了工程中用到的几种命令:

      a)AddLayer:108

      b)AddSource:209

      c)MoveLayer:44

      d)DeleteLayer:48

      e)ClearScreen:36

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

      a)AddLayer+AddSource:410

      b)MoveLayer:150

      c)DeleteLayer:153

      d)ClearScreen:123

      由以上两者的对比得出结论:命令的两次嵌套普遍带来了将近100个字节的开销。显然,嵌套的层数越少,转换出字符串的字节数越小。另外如果一个Protobuffer的message定义中包含了很多空字段,这些空字段其实不会消耗太多字节(序列化后发现其大小为0)。

      搜索资料可知,Protobuffer在包含repeated元素时,时间开销会较多,因为涉及到repeated元素个数到达一定值时的内存重新分配。所以,从时间和空间的角度来说,对Protobuffer的定义有两个建议,一是尽量少的嵌套,以减少空间开销(个人的理解,Protobuffer的定义应该扁平化);二是repeated元素不应过多,以减少时间开销。


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

  • 相关阅读:
    Linux查看所有用户用什么命令
    Sudoku Solver
    Restore IP Addresses
    Implement strStr()
    Insert Interval
    Recover Binary Search Tree
    First Missing Positive
    Rotate List
    Longest Palindromic Substring
    4Sum
  • 原文地址:https://www.cnblogs.com/jiayayao/p/6497969.html
Copyright © 2011-2022 走看看