c ++协议缓冲区的方法ByteSize()
的复杂性是多少?换句话说,是我在设置参数时计算的大小,并在内部存储在协议缓冲区中,或者是在我调用ByteSize()
时完成的计算。如果后者是这种情况,对于大型协议缓冲区对象来说这可能是非常昂贵的吗?
答案 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。
所以它似乎建议你应该使用其中一个。