Serializable インターフェースから Externalizable に切り替えることで、現在のシリアライゼーションのパフォーマンスを改善しようとしていますが、カスタムでパフォーマンスの高いシリアライゼーションを作成するためのベスト プラクティスに関するドキュメントはあまり見つかりませんでした。私の現在のソリューションは、ストック Java シリアライゼーションの約 2 倍の速さです。これは良いものですが、期待していた大幅な改善には見えません (シリアライゼーション手法/ライブラリのベンチマーク) 。
プリミティブ以外の場合は、フィールドが存在することを示すために 0 または 1 を書き込み、値が 1 の場合はフィールドを読み取るというアプローチをとっています。
if (in.read() == 1) {
name = in.readUTF();
}
それは正しいと思いますか?使用するより良いエンコーディングはありますか? マップ、リスト、およびその他の複雑なデータ構造についてはどうでしょう。列挙型のデフォルトのシリアル化は問題ありませんか?
ありがとう。