Wymagania: Ostatnio moi koledzy z zespołu projektu zmienili liczbę danych() > 0 na Any(), aby ocenić, czy dane są w kolekcji (nie w bazie zapytań IQueryble), a potem zapytali, dlaczego zostały zmienione (zoptymalizowane), ale nie było odpowiedzi.
Użyj benchmarków, aby porównać, który z poniższych Any() i Count() jest szybszy.
Zacznijmy od wniosku (w .NET Framwork):Count > Any() > Count()W .NET 6 wydajność Count() i Any() nie różnią się znacząco, ale mimo toAny() jest zalecany do zbierania danych, czy są dane。
Kod testu jest następujący:
.NET Framework 4.8.1Dane benchmarkowe przedstawiają się następująco:
.NET 6Dane benchmarkowe przedstawiają się następująco:
Czy nie mówiłeś, że w .NET Framwork Any() > Count() wydajność? Dlaczego Count() jest szybszy niż List? Powodem jest to, że podstawowa metoda Count() w List wywołuje pole Count, jak pokazano na poniższym rysunku:
(Koniec)
|