この記事では、 ImmutableList<T>などの変更できないコレクションを変更するときのパフォーマンスに関する分析情報について説明します。
原因
変更できないコレクション ( Add、 Remove、 Insertなど) を変更すると、パフォーマンスが低下します。
パフォーマンス分析情報の説明
変更できないコレクションを変更するたびに、コレクションの新しいコピーが作成され、メモリ割り当てと CPU 使用率が過剰になります。 これは、変更が頻繁、ループ、またはパフォーマンスクリティカルなコード パスで実行される場合に特に非効率的です。
可能であれば、構築中またはホット パスで変更可能なコレクション ( List<T> など) を使用し、必要な場合にのみ変更できないコレクションに変換します。 変更可能なコレクションを使用すると、効率的なインプレース変更が可能になりますが、変更できないコレクションは、スレッドの安全性と変更の頻度が低いシナリオに最適です。
警告を調査する方法
CPU 使用率ツールで、[ ソース コードの表示 ] をクリックして、変更できないコレクションが変更されている場所を見つけます。 可能であれば、パフォーマンスに依存するコードで変更可能なコレクションを使用するようにリファクタリングし、必要な場合にのみ変更できないコレクションに変換します。