データバインディングタスク(読み取りと書き込みの両方)のために、他の多くのデータ形式(xml、json、デフォルトオブジェクトシリアル化、ヘシアン、1つの独自のもの)とライブラリ(jaxb、高速情報セット、手書き)を使用してPBのパフォーマンスをテストしました。しかし、thrift のフォーマットは含まれていませんでした。複数のコンバーター (xml など) を使用する形式のパフォーマンスには、非常に遅いものからかなり速いものまで、非常に大きなばらつきがありました。著者の主張と知覚されたパフォーマンスとの相関関係はかなり弱かった. 特に、大胆な主張をしたパッケージについてはそうです。
価値のあるものとして、私は PB のパフォーマンスが少し誇大宣伝されていることを発見しました (通常、その作成者によるものではなく、誰が書いたかしか知らない他の人によるものです)。デフォルト設定では、最速のテキスト xml 代替に勝るものはありませんでした。最適化モード (なぜこれがデフォルトではないのですか?) では、最速の JSON パッケージに匹敵するほど高速でした。Hessian はかなり高速で、テキストの json もありました。独自のバイナリ形式 (名前はありません。社内用です) が最も遅かったです。Java オブジェクトのシリアライゼーションは、大きなメッセージの場合は高速でしたが、小さなオブジェクトの場合は高速でした (つまり、操作ごとに固定されたノーバーヘッドが高い)。PB のメッセージ サイズはコンパクトでしたが、すべてのトレードオフを考えると (データは自己記述的ではありません。スキーマを失うと、データが失われます。もちろん、インデックスと値の型がありますが、持っているものから必要に応じてフィールド名に戻すリバース エンジニアリング)、
これに関する私の意見は、(a) 実装は (データ形式の) 仕様よりも重要であることが多い、(b) エンドツーエンドの最善の組み合わせ (異なる形式の場合) の違いは、通常、選択。つまり、最もよく使用する (または最高のツール サポートがある) フォーマット + API/lib/フレームワークを選択し、最適な実装を見つけて、それが十分に高速に動作するかどうかを確認する方がよい場合があります。そうでない場合 (およびその場合のみ!)、次善の策を検討してください。
ps。ここでの EJB3 が何であるかはわかりません。単純な Java シリアライゼーションではないでしょうか。