【问题标题】:Does Protobuf-net tag numbers have performance implicationsProtobuf-net 标签号是否对性能有影响
【发布时间】:2014-04-13 18:41:01
【问题描述】:

我记得曾经读过用于 protobuf-net 的标签对性能有影响,但我似乎没有找到那个帖子......

例如,使用 ProtoInclude(1001, typeof(MyType)) 将不如 ProtoInclude(101, typeof(MyType)) 有效

会员等也是如此。

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

谢谢,

【问题讨论】:

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


    【解决方案1】:

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

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

    等等。

    十进制101是一个7位数字;十进制 1001 是一个 10 位数字;所以每个字段都需要 2 个字节。这基本上就是开销在这里的工作方式。除此之外:没关系。

    【讨论】:

    • 谢谢马克!这很有帮助!
    猜你喜欢
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-19
    • 1970-01-01
    • 2015-03-04
    • 2011-11-12
    相关资源
    最近更新 更多