【问题标题】:how to choose protocol-buffer's tags如何选择协议缓冲区的标签
【发布时间】:2013-11-14 07:30:35
【问题描述】:

这是一个real-life 的例子;手写.proto文件提取:

message StatsResponse {
  optional int64 gets = 1;
  optional int64 cache_hits = 12;
  optional int64 fills = 2;
  optional uint64 total_alloc = 3;
  optional CacheStats main_cache = 4;
  optional CacheStats hot_cache = 5;
  optional int64 server_in = 6;
  optional int64 loads = 8;
  optional int64 peer_loads = 9;
  optional int64 peer_errors = 10;
  optional int64 local_loads = 11;
}

我了解它的一切,除了编写它的程序员如何选择他要使用的标签号。

官方documentation 只是说明了这些标签是如何移动和编码以组成一个电线类型标识符的。然而,在上面的示例中,相同数据类型的多个字段具有不同的标记号。

我的问题是;如果我要从头开始编写.proto 文件,如何选择标签号?

【问题讨论】:

    标签: encoding tags protocol-buffers


    【解决方案1】:

    数字只是标识字段的另一种方式,而不是其名称。编码使用数字而不是名称,因为它们需要更少的空间和时间来编码。只要您以后不更改数字,您使用什么数字都没有关系(尽管数字越小在线路上占用的空间越小)。

    通常,人们只是从 1 开始按顺序分配数字。在您的示例原型中,cache_hits 可能是在所有其他字段之后添加的新字段,这就是它的数字出现“无序”的原因。

    【讨论】:

    • 另外,更小的数字在二进制消息中占用的空间更少。从内存 2047,2 个字节等
    猜你喜欢
    • 1970-01-01
    • 2011-09-18
    • 2021-12-19
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    • 2011-10-27
    相关资源
    最近更新 更多