gRPCを使い始めたばかりで、C++のバイトがstd::string
にコンパイルされていることに気付きました。つまり、サービスに到着するすべてのgRPCオブジェクトは、std::string
所有権のために新しいバッファにコピーする必要があります。 。grpcのゼロコピーバイトC++
私は、すべてのオブジェクトを新しいバッファにコピーしてから使用する(あまりにも多くの割り当てをしたくない)。
既知の解決策はありますか、またはgRPCを間違って使用していますか?
gRPCを使い始めたばかりで、C++のバイトがstd::string
にコンパイルされていることに気付きました。つまり、サービスに到着するすべてのgRPCオブジェクトは、std::string
所有権のために新しいバッファにコピーする必要があります。 。grpcのゼロコピーバイトC++
私は、すべてのオブジェクトを新しいバッファにコピーしてから使用する(あまりにも多くの割り当てをしたくない)。
既知の解決策はありますか、またはgRPCを間違って使用していますか?
gRPCはprotobufsを使用しています。生成されたrelease_XXX()
メソッドを呼び出すことで、protobuf Message
から移動することができます。
string* release_foo()
:フィールドの所有権を解放し、string
オブジェクトのポインタを返します。これを呼び出した後、呼び出し側は割り当てられたstring
オブジェクトの所有権を取り、foo()
は空の文字列/空のバイトを返します。
https://developers.google.com/protocol-buffers/docs/reference/cpp-generated
は私がいるProtobuf生成されたオブジェクトからではないのstd ::文字列からバイナリデータを解放する必要があります。 – RcRonco
'std :: string'からバイナリデータを解放する方法はありません。 gRPCをコピーせずに使いたい場合は、 'std :: string'を内部的に使うようにストレージを整理する必要があります。 – szym