您的位置:首页 > 其它

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_就占了你的空间哦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: