私はまだC#で新しくなっていますが、具体的なケースではList
の代わりにHashSet
を使用したフォーラムの掲示によって利点を気づいています。HashSetを反復する最も速く/最も安全な方法は何ですか?
私は現在、大量のデータを単一のList
に保存しているわけではありませんが、頻繁にそのメンバーをチェックする必要はありません。
私は実際にそれを繰り返し処理する必要がありますが、格納されたり取得された順序は実際問題ではありません。
私は、各ループが実際には次のものよりも遅いため、可能な限り速い方法でこれをどうやって行うことができますか?
.Contains()
のチェック数は、少なくともリストのパフォーマンスを傷つけているので、少なくともHashSet
のパフォーマンスと比較すると便利です。
編集:私は現在、リストを使用しており、多数の場所で繰り返し処理しており、それぞれの場所で異なるコードが実行されています。ほとんどの場合、現在のリストには、2次元配列を参照するために使用するポイント座標が含まれています。次に、リストの基準に基づいて操作を実行します。
私の質問に直接答えがないのであれば問題ありませんが、HashSet
を超える反復方法があると仮定して、ちょうどforeach
サイクルを超えています。私は現在、他の方法が何であるか、彼らが提供する利点などについて暗闇の中にいます。他の方法があると仮定すると、典型的な好ましい方法の選択は無視されます。それはスイートではありません(私のニーズはかなり基本的です)。
私はボトルネックであるため、時期尚早に最適化する限り、私はすでにリストを使用していることを知っています。この問題を解決する方法は、私が立ち往生しているところです。正確に詰まっていませんが、繰り返しテストしてホイールを作り直したいとは思っていませんでした。私ができる最善の方法です(これは3ヶ月以上投資された大規模なプロジェクトです。リストはどこにでもありますしかし、私は重複したくない、たくさんのデータを持っている、特定の順序で格納する必要がないなど、確かにあるものがあります)。
反復で何をする予定ですか?コードを実行しますか?何かを数える? –
あなたは時期尚早に最適化しています。今では、データ構造とコードのパフォーマンスの関係を完全に無視する必要はありませんが、HashSetのセマンティクスが必要な場合は、プログラムのコンテキストで反復をプロファイリングし、通常はどうなるかをプロファイルします走る反復がパフォーマンスのボトルネックではない場合は、それはあなたの時間の価値はありません。それがテストされると仮定するだけではありません。 –
私はその答えについて何も知らないが、私の大会では、最も速い方法が最も安全で、最も安全な方法は最速ではないと言われています。一つの方法が最も速くて安全な方法であれば、他の方法は必要ありません。私は間違っているかもしれません。 – nawfal