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

WBOY
リリース: 2024-02-12 15:45:06
転載
1187 人が閲覧しました

質問の内容

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

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

解決策

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

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

です。 リーリー

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

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

リーリー

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

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート