次の方法で共有


非効率的なリスト<T>。使用状況の検索

この記事では、 List<T>.Findを使用する場合のパフォーマンスに関する分析情報について説明します。

原因

List<T>.Find メソッドを使用すると、パフォーマンスが低下します。

パフォーマンス分析情報の説明

List<T>.Findメソッドは、リスト内で線形検索を実行し、その結果、各ルックアップの O(n) 時間の複雑さが生じる。 アイテムを頻繁に検索する場合や、大規模なリストで検索する場合、これは非効率的な場合があります。

可能であれば、 Dictionary<TKey,TValue> または HashSet<T>の使用を検討してください。 キーまたは一意のプロパティを値に割り当てることができる場合は、 Dictionary<TKey,TValue> を使用できます。 一意の値を格納する場合は、 HashSet<T> を使用できます。 どちらの代替データ構造も、 List<T>.Findの O(n) と比較して、各ルックアップで O(1) 時間の複雑さが発生します。

警告を調査する方法

CPU 使用率ツールで、[ ソース コードの表示 ] をクリックして、 List<T>.Find が使用されている場所を見つけます。 可能であれば、コードをリファクタリングして、より高速な検索で代替データ構造を使用します。

こちらも参照ください

.NET のディクショナリ