コレクションをクリアするのと、新しいインスタンスを作成するのはどちらが速いですか?
質問
私のコードには、数十から数百の要素を持つ一般的なリストがいくつかあります。
時々、このリストを他のオブジェクトで再充填する必要があるので、質問です。
Clear()
メソッドを呼び出すのと
new List<T>()
?
どのように解決するのですか?
<ブロッククオート
を呼び出すと、より速くなります。
Clear()
メソッドを呼び出すのと、`new List()を作成するのと、どちらが速いでしょうか?
これは答えようがありません。 コレクションがどれくらいの期間存在していたかを含め、本当に多くの要因に依存します。
ここでの最良の選択肢は、そうでしょう。
-
アプリケーションをプロファイルし、これが本当に重要かどうかを確認します。 その場合、このオブジェクトをどのように考えるかという点で、最も理にかなっている方法を使用します。
-
もしそれが重要であれば、コードの両方のセットを書き、速度の違いを測定します (もしあれば)。
実用的な観点からは
Clear()
を呼び出しても、実際にはメモリは減りません。
List<T>
によって使用される) メモリを実際に削減することはできません。 新しい
List<T>
を作成すると、新しいリストが割り当てられることになり、その結果、成長とともにさらに割り当てが増えることになります。
しかし、これは遅くなるという意味ではありません。多くの場合、再割り当てを行うことは より速い というのも、大きな配列をより高いガベージコレクション世代に昇格させる可能性が低く、その結果、GC プロセスをより速く維持することができるからです。
あなたの正確なシナリオと 測定 をプロファイラーで測定しなければ、あなたのシナリオではどちらが優れているのかを知る方法はありません。
関連
-
[解決済み] パッケージのダウングレード警告を検出(dotnet core, vs 2017)
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] 要素ごとの加算は、結合ループよりも分離ループの方がはるかに高速なのはなぜですか?
-
[解決済み] <は<=より速いのか?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] 整数の平方根が整数であるかどうかを判断する最速の方法
-
[解決済み] 汎用クラスやメソッドのメンバからTの型を取得する方法
-
[解決済み] なぜ[]はlist()よりも速いのですか?
-
[解決済み] RelativeSourceでWPFバインディングを使用するにはどうしたらいいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】プラットフォームが同じでも「不正なフォーマットでプログラムを読み込もうとしました。
-
[解決済み] [Solved] ファイル *.mdf をデータベースとしてアタッチできない
-
[解決済み] EF Coreのadd-migrationのビルドに失敗しました。
-
[解決済み] LINQ to Entitiesはメソッドを認識しません。
-
[解決済み] Windowsイベントログで参照される「フレームワークのバージョン」とは何ですか?
-
[解決済み] Powershell v3 Invoke-WebRequest HTTPSエラー
-
[解決済み] terminationGracePeriodSeconds not
-
[解決済み] .NETにおけるstructとclassの違いは何ですか?
-
[解決済み] 埋め込みリソーステキストファイルの読み方
-
[解決済み] RelativeSourceでWPFバインディングを使用するにはどうしたらいいですか?