방금 gRPC를 사용하기 시작했고 C++의 바이트가 std::string
으로 컴파일됨을 알았습니다. 즉, 서비스에 도착한 모든 gRPC 객체를 std::string
소유권으로 인해 새 버퍼에 복사해야합니다. .grpc에서 0 바이트 복사 C++
너무 많은 할당을 사용하기 전에 모든 객체를 새 버퍼로 복사하고 싶지 않습니다.
알려진 해결 방법이 있습니까, 아니면 gRPC를 잘못 사용하고 있습니까?
방금 gRPC를 사용하기 시작했고 C++의 바이트가 std::string
으로 컴파일됨을 알았습니다. 즉, 서비스에 도착한 모든 gRPC 객체를 std::string
소유권으로 인해 새 버퍼에 복사해야합니다. .grpc에서 0 바이트 복사 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 생성 된 객체로부터가 아닌 표준 : : 문자열에서 이진 데이터를 공개 할 필요가있다. – RcRonco
'std :: string'에서 바이너리 데이터를 해제 할 방법이 없습니다. gRPC를 복사본없이 사용하려면 내부적으로'std :: string'을 사용하도록 저장소를 구성해야합니다. – szym