この記事では、 LinkedList<T> コレクションを走査するときのパフォーマンスに関する分析情報について説明します。
原因
LinkedList<T>を走査して要素を検索すると、パフォーマンスが低下します。
パフォーマンス分析情報の説明
LinkedList<T> では、インデックスによる要素への O(1) アクセスは提供されません。 リスト内の各トラバーサル (特にループまたは入れ子になったループ) では、O(n) 時間の複雑さが生じます。 これにより、アイテムを頻繁に検索したり、大規模なリンク リストで検索したりすると、パフォーマンスが大幅に低下する可能性があります。
可能であれば、 List<T> または Dictionary<TKey,TValue>の使用を検討してください。
List<T> はインデックスによる O(1) アクセスを提供し、 Dictionary<TKey, TValue> はキーによる O(1) 参照を提供します。 多くの場合、これらの代替方法は、リンクされたリストを走査する場合と比較して、ほとんどのアクセス パターンの方が効率的です。
警告を調査する方法
CPU 使用率ツールで、[ ソース コードの表示 ] をクリックして、トラバーサル LinkedList<T> 使用されている場所を見つけます。 可能であれば、シナリオにすばやくアクセスできる別のコレクション型を使用するようにリファクタリングします。