여러 클라이언트에게 전송해야 하는 protobuf 메시지가 있습니다. 메시지에는 클라이언트마다 다른 하나의 필드(시퀀스 번호)를 제외하고 각 클라이언트에 대해 동일한 데이터가 있습니다. 이제 생성된 Java 메시지 객체의 필드를 변경하고 각 클라이언트에 대해 별도로 메시지를 직렬화할 수 있습니다. 하지만 하나의 필드를 제외한 모든 항목을 직렬화한 다음 각 클라이언트에 대해 해당 필드를 직렬화하는 방법이 있습니까(예: 직렬화된 메시지에서 해당 바이트를 교환하는 등)?
EDIT: 두 개의 메시지를 병합하는 mergeFrom 메서드를 본 적이 있지만 제가 이해한 바에 따르면 먼저 메시지를 구문 분석한 다음 데이터를 교환한 다음 다시 직렬화할 수 있으므로 전혀 성능 최적화가 아닙니다(?).
우선 이것이 실제로 성능과 관련이 있는지 확인하고 싶습니다. 프로토콜 버퍼 메시지가 크지 않다면(수 킬로바이트가 아니라면 고려하지도 않을 것입니다), 이것이 본질적으로 성능에 전혀 영향을 미치지 않을 것으로 예상하므로 최적화하려고 시도조차 해서는 안 됩니다.
병목 현상을 고려했다면 어렵지 않습니다. 직렬화된 프로토타입 생성자 병합 양식을 연결하므로 아마도 이것은으아아아
(이 있는 경우.) special_field
作为必填字段(违反最佳实践),那么您可能需要改用 buildPartial
으아아아
위 내용은 Java에서 공통 필드의 Protobuf 부분 직렬화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!