Protobuf-net标签号码是否具有性能影响

时间:2014-03-10 15:10:43

标签: .net serialization protocol-buffers protobuf-net

我记得有一次读到用于protobuf-net的标签有性能影响,但我似乎没有找到帖子......

例如,使用ProtoInclude(1001,typeof(MyType))将无效,因为ProtoInclude(101,typeof(MyType))

同样适用于会员等。

你能否对此有所了解并提供一些最佳实践?

感谢,

1 个答案:

答案 0 :(得分:1)

协议缓冲区中的字段编号使用“varint”编码进行编码。在“varint”中,MSB是一个连续位,因此每个字节只有7位用于数据。但是,前3位是为字段类型保留的;所以这意味着:

  • 可以在单个字节中存储4位字段编号(包括字段类型)
  • 11位字段编号可以以2个字节存储
  • 18位字段编号可以存储在3个字节

等等。

十进制101是一个7位数;十进制1001是一个10位数;所以两个字段都需要2个字节。这基本上是如何在这里开销。除此之外:没关系。