我刚开始使用gRPC,我注意到C ++中的字节编译成std::string
,这意味着每个到达服务的gRPC对象都需要复制到新的缓冲区,因为{{1}所有权。
我不想在使用它之前将每个对象复制到新缓冲区(分配太多)。
是否有任何已知的解决方案,或者我使用的是gRPC错误?
答案 0 :(得分:0)
gRPC只使用protobufs。您可以通过调用生成的Message
方法移出protobuf release_XXX()
中的内容。
string* release_foo()
:释放字段的所有权并返回string
对象的指针。调用它之后,调用者获取分配的string
对象的所有权,foo()
将返回空字符串/空字节。
https://developers.google.com/protocol-buffers/docs/reference/cpp-generated