ByteSize()用于c++协议缓冲区的方法有多复杂?换句话说,是在设置参数时计算并存储在内部协议缓冲区中的大小,或者是在调用ByteSize()时完成的计算。如果是后者,对于大型协议缓冲区对象来说,这可能相当昂贵,对吗?
发布于 2017-05-16 06:53:28
答案似乎是从其他函数的文档中得到的:https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.message
SpaceUsed()明显比ByteSize()慢,因为它是使用反射(而不是为ByteSize()生成的代码实现)实现的。与ByteSize(),类似,它的CPU时间与为定义的字段数成线性关系。
和
ByteSizeLong()通常在为proto定义的字段数中是线性的。
不过,我并没有看到对ByteSize()本身的复杂性的描述,只是如下所示:
int ByteSize() const遗留的ByteSize()API。
所以这似乎意味着你应该使用其他的一个。
https://stackoverflow.com/questions/43994264
复制相似问题