8

私は、Java のネイティブ シリアライゼーションが遅いプロジェクトに取り組んでいるので、優れたパフォーマンスのために、クラスに Externalize インターフェイスを実装することに移行したいと考えています。

ただし、これらのクラスには多くのデータ メンバーがあり、これら 2 つのメソッドを記述しているときに間違いを犯しやすいことに気付きました。これらの関数でクラスのすべてのメンバーを読み書きしているだけで、特別なことは何もありません。readExternal() writeExternal()オフライン プロセスまたはコンパイル時に自動的に外部化するためのブロックを生成する方法はありますか?

http://projectlombok.org/を見てみましたが、そのようなものが理想的でした。

同様に、これらのクラスを不変に保ちたいのですが、不変クラスは外部化可能なインターフェースを実装できません - 有効な Java のプロキシ クラス パターンを使用したいのですが、それを生成することも有用です。

4

2 に答える 2

1

Java のネイティブ シリアル化が遅いプロジェクトに取り組んでいます

どのくらい遅いですか?なんで?多くの手作業によるコーディングで高速化することは、経済的に実現可能であるか、長期的には保守可能であるとは考えにくい. シリアライゼーションのオーバーヘッドは、実際には送信時の時間と空間の境界に帰着するはずです。Java のデフォルトのシリアル化が、計画しているすべての手作業によるコーディングの結果よりも驚くほど遅くなる特別な理由はありません。原因を調べたほうがいいです。たとえば、適切に配置された BufferedOutputStream がすべての問題を解決することに気付くかもしれません。

于 2011-08-17T08:25:30.737 に答える