Diese Funktion wird oft 1000 mal genannt und es gibt 5000 Studenten in der Ergebnismenge.
Wie kann ich diese Funktion optimieren? Ich weiß, dass die Konvertierung von IEnumerable
nach HashSet
viele Gemeinkosten verursacht.
ToHashSet
ist meine Erweiterungsmethode.
Diese Funktion ist zu langsam und essen viel Zeit.
Zuerst müssen Sie die Hashset-Werte in Ihrer Dienstfunktion nicht aufzählen Sie könnten die Effizienz verbessern, indem Sie eine nette statische Erweiterungsklasse verwenden, die von @Jon
geschrieben wurdeZeilenergebnis in hashset umwandeln
und ich denke, dass Sie den FirstOrDefault nicht überprüfen müssen, da die Erweiterung das neue Student-Objekt behandelt, das T gegeben wurde so könnten Sie auf sauberere und saubere Weise ändern.
%Vor%Die andere Option ist, dass Sie IEnumerable in Ihren Konstruktor für HashSet übergeben können wie
%Vor%Sie haben also nur eine Codezeile in Ihrer GetStudents-Funktion
Führen Sie die Abfrage nicht zweimal pro Aufruf aus.
%Vor%Ihr Zustand ist unnötig:
%Vor%Ich weiß, dass die Konvertierung von Ienumerable nach Hasset viel bewirkt von Gemeinkosten
Das ist Stier. Du hast nichts gemessen und täuschst dich selbst, den falschen Teil des Codes zu optimieren.
Tags und Links linq performance ienumerable hashset