私はアイテムのリストを持っており、それらのサブセットを反復したいと思います。さて、私は、リストから不要なアイテムを削除してからそれをループするときに、パフォーマンスに影響があるかどうかは分かりません。 forループ内のリストを単にフィルタリングすることもできます。.RemoveAllと.ChereのC#のパフォーマンスの差
ここは例です。
REMOVEALLアプローチ:
list.RemoveAll(o => !someOtherList.Contains(o.Property));
foreach (var i in list)
{
}
アプローチザ・:
foreach (var i in list.Where(o => someOtherList.Contains(o.Property))
{
}
私は最初のアプローチは、実際にどこ秒1がないので、リストにあるものを操作しようとしていることを理解します。それは本当に私には関係しません。私は、第2のアプローチのフィルタが各反復に適用されるかどうか、またはC#がサブセットを作成してそのサブセットをループするだけであるかどうかについて懸念しています。 Iは第2のアプローチでは、フィルタがほぼ有する第 アプローチと同様に(各反復またはC#はそのサブセットを介し サブセットのみループを作成するのに十分スマートであるか否かを 適用されるか否かのより心配
「someOtherList.Contains」が何回呼び出されるのでしょうか?という質問がある場合、私はその答えが両方のサンプルで同じであると強く思っています。 –
どちらが速いのですか?両方を1000回実行し、平均を計算してください! – user3185569
@Damien_The_Unbeliever:私の質問は何回list.Whereに呼び出されますか? – Johannes