ByteSize()方法的复杂性

时间:2017-05-16 06:47:08

标签: c++ protocol-buffers

c ++协议缓冲区的方法ByteSize()的复杂性是多少?换句话说,是我在设置参数时计算的大小,并在内部存储在协议缓冲区中,或者是在我调用ByteSize()时完成的计算。如果后者是这种情况,对于大型协议缓冲区对象来说这可能是非常昂贵的吗?

1 个答案:

答案 0 :(得分:3)

答案似乎是从其他功能的文档中暗示的:https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.message

  

SpaceUsed()明显慢于ByteSize(),因为它是使用反射实现的(而不是ByteSize()生成的代码实现)。 ByteSize() 类似,其CPU时间与为proto定义的字段数呈线性关系。

  

ByteSizeLong()通常是为proto定义的字段数量的线性。

我实际上并没有看到ByteSize()本身的复杂性的描述,只是这个:

  

int ByteSize() const

     

旧版ByteSize() API。

所以它似乎建议你应该使用其中一个。