null
プロパティ(任意の1つ)をに設定する最速の方法は何IEnumerable
ですか?私foreach
の唯一の選択肢はありますか?
2164 次
2 に答える
7
リストが非常に大きい場合は、これを並行して実行することを検討できます。
enumerable.AsParallel().ForAll(a => a.Value = null);
ただし、オブジェクトはスレッドセーフである必要があることを念頭に置いてベンチマークとむき出しにする価値があります。
ここでの簡単なテストでは、リストのサイズが1,000万アイテムを超えた場合の投資収益率が示されました*。リストのサイズを小さくし、並列処理を設定するコストがメリットを上回ります。
*マイレージは変動します
于 2013-01-28T15:42:24.583 に答える
1
目標を達成するには2つの方法があります。
あなたが言ったように:
foreach(var item in enumeration) { item.Property = null; }
LINQを使用することもできます。
enumeration.ToList().ForEach(item => item.Property = null);
2番目の方法は短くて読みやすく見えますが、実行速度が遅くなる可能性があります。これは、Jeppe Stig Nielsenが指摘したように、が(最初に列挙される)IEnumerable
に変換され、そのリストが再度列挙されて、最終的にプロパティが設定されるためです。List
したがって、あなたは正しいです:foreach
あなたの唯一の選択肢です。ただし、foreach
-representationは次のようになりますが、各アイテムを変更するには、常にコレクションを反復処理する必要があります。
于 2013-01-28T15:31:13.820 に答える