← C#

LESSON / ARTICLE

高度なメモリ・パフォーマンス最適化

割り当て、データ局所性、プーリング、Spanを使った最適化の判断を学びます。

最適化の前提

メモリ最適化は、測定で問題が確認された箇所に対して行います。メモリ使用量、割り当て頻度、GC停止時間、処理速度のどれを改善したいのかを先に定義します。

割り当てを減らす

不要な一時オブジェクト、過剰な文字列連結、LINQの中間コレクションなどが割り当ての原因になることがあります。Span<T>やStringBuilderなどを、計測結果に基づいて使います。

プーリング

頻繁に生成・破棄する大きなオブジェクトは、再利用によって割り当てを減らせる場合があります。ただし、返却漏れや状態の初期化漏れが新たな不具合を生むため、所有権を明確にします。

トレードオフ

メモリ効率を上げる低レベル実装は、可読性や安全性を損なうことがあります。性能改善の前後で同じテストを実行し、改善効果と副作用を確認します。