ホームページ  >  記事  >  Java の共通フィールドの Protobuf 部分シリアル化

Java の共通フィールドの Protobuf 部分シリアル化

WBOY
WBOY転載
2024-02-12 15:45:061126ブラウズ

質問の内容

複数のクライアントに送信する必要がある protobuf メッセージがあります。メッセージには、クライアントごとに異なる 1 つのフィールド (シーケンス番号) を除いて、各クライアントで同じデータが含まれます。これで、生成された Java メッセージ オブジェクトのフィールドを変更し、クライアントごとにメッセージを個別にシリアル化できるようになりました。しかし、1つのフィールドを除くすべてをシリアル化して、各クライアントに対してそのフィールドだけをシリアル化する方法はありますか(たとえば、シリアル化されたメッセージ内の対応するバイトを交換するなど)?

編集: 2 つのメッセージをマージする mergeFrom メソッドを見てきましたが、私の理解では、最初にメッセージを解析し、次にデータを交換してから、再度シリアル化できるため、パフォーマンスの最適化はまったくありません (? )。

解決策

まず、これが実際にパフォーマンスに関連していることを確認したいと思います。

これがボトルネックであると特定したと仮定すると、これは難しいことではありません。連結されたシリアル化プロトタイプはマージされたフォームを構築するため、これはおそらく

です。 リーリー

(special_field を (ベスト プラクティスに反して) 必須フィールドにしている場合は、代わりに buildPartial を使用することをお勧めします。)

その後、それを生のメッセージとして読みます

リーリー

以上がJava の共通フィールドの Protobuf 部分シリアル化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。