测试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
添加图片资源
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
相关文章推荐
- 测试Protobuffer的定义格式对其时间和空间的影响
- 测试Protobuffer的定义格式对其时间和空间的影响
- 测试Protobuffer的定义格式对其时间和空间的影响
- 测试Protobuffer的定义格式对其时间和空间的影响
- 转自博客园的一篇关于日期格式的文字《.NET中DateTime时间格式转换(附用户定义格式)》
- 测试表空间和数据文件脱机影响
- XenServer中VM的存储格式对空间以及性能的影响
- 测试索引的空间换时间
- if和switch的两个测试小程序,时间上的效率和空间上的占用!
- 定义两个整型指针,分别用malloc、calloc对其分配空间保存3个元素,malloc分配的空间用memset清零,随机对数组进行赋值随机范围1-3,赋值后用memcmp比较两个数组。如果相同打印G
- .NET中DateTime时间格式转换(附用户定义格式)
- 屏蔽配置文件中编码格式对日期时间的影响
- 3 定义两个整型指针,分别用malloc、calloc对其分配空间保存3个元素,malloc分配的空间用memset清零,随机对数组进行赋值随机范围1-3,赋值后用memcmp比较两个数组。如果相同
- 外部样式OL LI的定义 影响到了富文本框内的UL LI的定义,使用内部样式对其还原
- 定义两个整型指针,分别用malloc、calloc对其分配空间保存3个元素,malloc分配的空间用memset清零,随机对数组进行赋值随机范围1-3,赋值后用memcmp比较两个数组。如果相同打印G
- Oracle 重建控制文件对只读表空间和临时表空间影响的测试
- .NET中DateTime时间格式转换(附用户定义格式)
- .NET中DateTime时间格式转换(附用户定义格式)
- VB.Net 获取或者转换时间不受系统时间格式影响
- JAVA 学习日志 测试时间Date、日历Canlendar、时间格式SinmpleDateFormat。珍惜时间,珍爱生命