proto如何做到节省空间。
2015-09-27 10:53
411 查看
::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];
message Test
{
optional int32 aa = 1;
optional int32 bb = 2;
}
可以看出上面messgae有两个optional字段
当生成对应的代码的时候
proto帮我们同时生成了一个 ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];
这里的2意思的两个字段,实际上就是一个bit数组,用位去标示每一个字段是否存在
依次从低位到高位,分别标示从aa到bb等等
很厉害吧
其实这也是我们工作常用的一种做法。
在message比较大的时候,optional可以很好的节省数据空间。
比较小的时候_has_bits_就占了你的空间哦
message Test
{
optional int32 aa = 1;
optional int32 bb = 2;
}
可以看出上面messgae有两个optional字段
当生成对应的代码的时候
proto帮我们同时生成了一个 ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];
这里的2意思的两个字段,实际上就是一个bit数组,用位去标示每一个字段是否存在
依次从低位到高位,分别标示从aa到bb等等
很厉害吧
其实这也是我们工作常用的一种做法。
在message比较大的时候,optional可以很好的节省数据空间。
比较小的时候_has_bits_就占了你的空间哦
相关文章推荐
- Outlook接收qq的邮件
- 找出最长递增子序列
- iOS Tips-01
- myeclipse 2015 stable2.0 激活
- css伪类,a标签的四种状态
- hdu5444
- 构造所有二叉查找树
- 关于OCP
- 【读书笔记】iOS-编码对象
- python编程之if/for/while语句
- 【Linux】various questions
- hdu 4559 涂色游戏(SG)
- Java的OutOfMemory问题
- Hibernate n+1问题
- spring_150907_sqlmapclientdaosupport_getSqlMapClient
- 回归童年--2015年9月英语月总
- HDU 5475 An easy problem (暴力||线段树_好题 )
- rest开发
- Activity的启动模式LaunchMode
- main函数的参数:处理命令行选项