Anforderungen: Kürzlich haben meine Kollegen im Projektteam die Datenanzahl() > 0 auf Any() geändert, um zu beurteilen, ob Daten in der Sammlung enthalten sind (nicht die IQueryble-Abfragedatenbank), und dann gefragt, warum sie (optimiert) geändert wurde, aber es gab keine Antwort.
Verwenden Sie Benchmarks, um zu vergleichen, welche der folgenden Any() und Count() schneller sind.
Beginnen wir mit der Schlussfolgerung (in .NET Framwork):Zähle > Any() > Count()In .NET 6 unterscheiden sich die Count()- und Any()-Performance nicht viel, aber dennochAny() wird empfohlen, um Daten zu sammeln, falls es Daten gibt.。
Der Testcode ist wie folgt:
.NET Framework 4.8.1Die Benchmark-Daten sind wie folgt:
.NET 6Die Benchmark-Daten sind wie folgt:
Hast du das nicht in .NET Framwork Any() > Count() Performance gesagt? Warum ist Count() schneller als List? Der Grund dafür ist, dass die zugrundeliegende Count()-Methode von List das Count-Feld aufruft, wie in der untenstehenden Abbildung dargestellt:
(Ende)
|