在grpc c ++中零拷贝字节

时间:2017-09-12 09:02:29

标签: protocol-buffers grpc

我刚开始使用gRPC,我注意到C ++中的字节编译成std::string,这意味着每个到达服务的gRPC对象都需要复制到新的缓冲区,因为{{1}所有权。

我不想在使用它之前将每个对象复制到新缓冲区(分配太多)。

是否有任何已知的解决方案,或者我使用的是gRPC错误?

1 个答案:

答案 0 :(得分:0)

gRPC只使用protobufs。您可以通过调用生成的Message方法移出protobuf release_XXX()中的内容。

  

string* release_foo():释放字段的所有权并返回string对象的指针。调用它之后,调用者获取分配的string对象的所有权,foo()将返回空字符串/空字节。

https://developers.google.com/protocol-buffers/docs/reference/cpp-generated