对同一类型的多个消息进行编码的每种流实现的权衡、优点和缺点是什么?
它们有什么不同吗?我想要实现的是将盒子向量存储到 protobuf 中。
Impl 1 :
package foo;
message Boxes
{
message Box
{ required int32 w = 1;
required int32 h = 2;
}
repeated Box boxes = 1;
}
Impl 2:
package foo;
message Box
{ required int32 w = 1;
required int32 h = 2;
}
message Boxes
{ repeated Box boxes = 1;
}
Impl 3 :将多个这样的消息流式传输到同一个文件中。
package foo;
message Box
{ required int32 w = 1;
required int32 h = 2;
}
马克·格拉维尔(Marc Gravell)的回答当然是正确的,但他错过了一点
- 选项 1 和 2(重复选项)将序列化/反序列化所有盒子同时
- 选项 3(文件中的多条消息)将序列化/反序列化一盒接一盒。
如果使用 java,则可以使用分隔文件(这将在消息开头添加 Var-Int 长度)。
大多数时候,使用重复消息还是多条消息并不重要,但如果有数百万/数十亿个盒子,则选项 1 和 2(重复)以及选项 3(文件中的多条消息)的内存将成为问题将是最好的选择。
总结来说:
- 如果有数百万/数十亿个盒子使用 -选项 3(文件中有多条消息).
- 否则使用其中之一重复选项 (1/2)因为它更简单并且支持所有 Protocol buffers 版本。
就我个人而言,我希望看到“标准”多消息格式
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)