Ich wiederhole einen anonymen Typ mit ungefähr 1000 Elementen.
Die Frage hier ist, wie ist es möglich, dass meine Schleife dauert fast 3 Sekunden zu vervollständigen, während was innerhalb der Schleifen dauert weniger als 1 ms. Bei tausend Elementen muss die Schleife innerhalb der zweiten enden, nicht 3.
Gibt es eine Möglichkeit, es schneller zu iterieren?
%Vor%Linq verwendet eine verzögerte Ausführung. Ihre linq-Abfrage wird nicht wirklich ausgeführt, bis jemand IEnumerable zurückgibt. Die Ausführungszeit, die Sie sehen, ist das Ergebnis der Abfrage, nicht die foreach.
Zwei unmittelbare Vorschläge:
p.Methods.Count() > 0
- das muss eine vollständige Zählung durchführen, obwohl Sie nur wissen müssen, ob irgendwelche Elemente vorhanden sind. Verwenden Sie stattdessen p.Methods.Any()
. this.Project.WorkDaysCount
nicht bei jeder Iteration. Wir wissen nicht genau, was dort vor sich geht, aber es kann teuer werden. Rechne es voraus und benutze die Konstante. Hier ist der verbesserte Abfragecode:
%Vor%Wie andere bereits gesagt haben, ist der Grund dafür, dass die Abfragekonstruktion selbst keine nennenswerte Zeit in Anspruch nimmt, dass sie keine wirkliche Arbeit leistet. Aber das zu wissen, macht es natürlich nicht schneller:)
Darüber hinaus müssen wir mehr über den Kontext wissen. Ist das LINQ zu Objects, LINQ to SQL oder etwas anderes? Was ist der Typ von tt
?
Tags und Links optimization linq asp.net