LINQ リング: 巨大なコレクションの Any() と Contains() の比較 質問する

LINQ リング: 巨大なコレクションの Any() と Contains() の比較 質問する

膨大なオブジェクトのコレクションがある場合、次のパフォーマンスの違いはありますか?

コレクション。含まれるもの:

myCollection.Contains(myElement)

列挙可能。:

myCollection.Any(currentElement => currentElement == myElement)

ベストアンサー1

Contains()はインスタンス メソッドであり、そのパフォーマンスはコレクション自体に大きく依存します。たとえば、Contains()a ではListO(n) ですが、Contains()a ではHashSetO(1) です。

Any()は拡張メソッドであり、コレクション全体を単純に処理して、すべてのオブジェクトにデリゲートを適用します。したがって、計算量は O(n) になります。

Any()ただし、デリゲートを渡すことができるため、より柔軟です。Contains()オブジェクトのみを受け入れることができます。

おすすめ記事