【发布时间】:2011-12-27 22:01:40
【问题描述】:
我正在尝试在 ProtoBuf 中设计我的第一个文件格式,但我不确定在某些情况下什么是最佳选择,因为内存/流布局对我来说并不完全清楚。
所以我实际上有几个问题,但都密切相关:
1) 可选字段被省略时的成本是多少?
我认为它应该只花费一个 bit,因为位域可用于标记存在/不存在的域,但我不确定。他们可能会改为使用每个可选字段的整个字节。
2) 当重复字段为空时,它的成本是多少?它也是一位,如可选字段,还是“字段头”+一个(varint)字节表示它的大小为0?
3) 由于“bytes”隐含了一个大小,在缺少的可选字节字段和空的必需字节字段之间实际上是否存在大小差异?
[编辑] “内存”是指文件系统或网络带宽上使用的空间;我不是指 RAM,因为这取决于编程语言。
【问题讨论】:
标签: protocol-buffers