[解決済み] List<T>.Contains() がとても遅い?
2023-01-10 11:18:24
質問
どなたか、なぜジェネリックスの
List.Contains()
関数がとても遅い理由を教えてください。
私は
List<long>
に約100万個の数字があり、これらの数字の中に特定の数字があるかどうかを常にチェックしているコードです。
を使って同じことをやってみました。
Dictionary<long, byte>
と
Dictionary.ContainsKey()
関数を使用した場合、Listを使用した場合よりも10~20倍程度速くなりました。
もちろん、Dictionaryはそのような使い方を想定していないので、本当は使いたくありません。
ということで、ここでの本当の疑問は
List<T>.Contains()
のような奇抜なものではなく
Dictionary<K,V>.ContainsKey()
?
どのように解決するのですか?
存在だけを確認する場合
HashSet<T>
は、辞書のようなパフォーマンスで、キー/値のペアはなく、値だけです。
HashSet<int> data = new HashSet<int>();
for (int i = 0; i < 1000000; i++)
{
data.Add(rand.Next(50000000));
}
bool contains = data.Contains(1234567); // etc
関連
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] 割り当て後にリストが予期せず変更されました。その理由と防止策を教えてください。
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] リストの最後の要素を取得する方法
-
[解決済み] Javaで配列に特定の値が含まれているかどうかを判断するにはどうすればよいですか?
-
[解決済み] リストの要素数を取得する方法
-
[解決済み] List<T>をオブジェクトのプロパティでソートする方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ファイル *.mdf をデータベースとして添付できません。
-
[解決済み] ポストバックまたはコールバックの引数が無効です。 イベント検証は '<pages enableEventValidation="true"/>' を使用して有効になっています。
-
[解決済み] <Database> コンテキストを支えるモデルが、データベース作成後に変更されました。
-
[解決済み] 16進数値0x00は無効な文字です。
-
[解決済み] LINQ to Entitiesはメソッドを認識しません。
-
[解決済み] csilogfileは何のためにあるのですか?
-
[解決済み] Nuget接続の試行に失敗しました。"Unable to load service index for source"。
-
[解決済み] 権限 '*' を持つ SSL/TLS の安全なチャネルを確立できませんでした。
-
[解決済み] PowerShellで文字列がNULLまたは空であるかどうかを確認するにはどうすればよいですか?
-
[解決済み] WPFのStaticResourceとDynamicResourceの違いは何ですか?