ByteSize() 方法的复杂性

Complexity of ByteSize() method

本文关键字:复杂性 方法 ByteSize      更新时间:2023-10-16
C

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

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

SpaceUsed()明显比ByteSize()慢,因为它是使用反射实现的(而不是为ByteSize()生成的代码实现(。ByteSize()一样,它的CPU时间在为原型定义的字段数量上是线性的。

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

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

int ByteSize() const

旧版 ByteSize() API。

因此,它似乎建议您使用其他方法之一。