先週、私はいくつかのコードを受け取り、パフォーマンスを改善するように求められました。だから仕事を始めましたが、すぐに私は彼らがたくさんのオブジェクトを使用して、大きなコレクションのオブジェクトを(10000から100000個以上のオブジェクトに)格納することを多くのHashSet<T>
オブジェクトで確認しました。コードでは、パフォーマンス上の理由からHashSet<T>
を使用します。HashSetのパフォーマンス<T>およびLinqクエリ
彼らが行う唯一のことは、オブジェクトでHashSetを埋め込み、その後複数のコレクション間でクエリを実行するLinqです。ほとんどのクエリは、1またはn HashSetを結合しているか、First()
またはWhere()
でコレクションから特定のオブジェクトを取得しています。
普通のList<T>
と比較してパフォーマンス上の利点があるのでしょうか?コードで使用するすべてのLinq拡張メソッドはIEnumerable<T>
のために書かれています。
インターネット上では、Listのほうが速いと言われる記事がたくさんありますが、HashSetはListよりもはるかに優れたコレクションを処理していると言われる人もいます。
誰かが私に助言を与えることを望みます。
ありがとうございました。
これらの両方のパフォーマンスを比較してテストを簡単に作成できませんでしたか? – row1
また、HashSetが順序付けされていないことにも気づくでしょう - あなたが任意の要素を必要としないか、または既に1つの要素を除いてすべてをフィルタリングしていない限り、 'First'要素は間違っています。 – Kobi
あなたのアプローチは非常に非生産的です。プロファイラを使用します。 –