プロジェクトに取り組んでいるときに、次のコードに遭遇しました。これにより、パフォーマンス フラグが発生しました。
foreach (var sample in List.Where(x => !x.Value.Equals("Not Reviewed")))
{
//do other work here
count++;
}
元のループと次のループを比較する簡単なテストをいくつか実行することにしました。
foreach (var sample in List)
{
if (!sample.Value.Equals("Not Reviewed"))
{
//do other work here
count++;
}
}
このループも投げて、何が起こるかを確認します。
var tempList = List.Where(x => !x.Value.Equals("Not Reviewed"));
foreach (var sample in tempList)
{
//do other work here
count++;
}
また、元のリストに 3 つの異なる方法で入力しました: 50-50 (つまり、値の 50% が「未レビュー」で残りがその他)、10-90 および 90-10。これらは私の結果です。最初と最後のループはほとんど同じですが、2 番目のループは特に 10-90 の場合にはるかに高速です。なぜ正確に?Lambda
パフォーマンスがいいとずっと思っていました。
編集
は実際にはループ内にあるものではありません。count++
デモンストレーションのためにここに追加しただけです。「//do something here」を使用する必要があったと思います。
編集2
それぞれを 1000 回実行した結果: