オブジェクトの再利用について少し

私は最近、ピーター・ローリーがホストするブログを見つけました。 JVMでのコードのパフォーマンスに関する興味深い情報を見つけることができます。



そこで、オブジェクトを再利用するという異常なアプローチを見つけました。 彼はいくつかの理由で不慣れです。





しかし、この概念の利点を見ることができる領域があります。 これは、オブジェクトのシリアル化(または、逆シリアル化)です。 実際、この場合、新しいオブジェクトが絶えず作成され、生産性に悪影響を及ぼします。 さらに、このプロセスはデータをCPUキャッシュから強制的に削除します。



参照により、テストコードを見つけることができます(Kotlin:trollface :)。 このコードは、ByteBufferからオブジェクトのコレクションをデシリアライズします。 結果は昇順でソートされます。







ご覧のとおり、新しいオブジェクトを作成する必要がある場合、逆シリアル化に時間がかかります。 時々、違いは非常に顕著です。 ただし、新しい機能を作成すると、オーバーヘッドが増え、GCが頻繁にトリガーされることになります。







このグラフは、最悪の5%を示しています。 違いは、GCのトリガーによるものです。



All Articles