Ich habe;Raumkomplexität einer einfachen Linq (zu Objekten) Abfrage
var maxVal = l.TakeWhile(x=>x < val).Where(x=>Matches(x)).Max();
Wie viel Platz braucht das? Erstellt Linq eine Liste der oben genannten Where() - Bedingung, oder ist Max() nur durch das IEnumerable iterierend, um zu verfolgen, was der aktuelle Max() ist?
Und wo kann ich weitere Informationen über diese finden, außer fragen auf SO f
Es ist sinnvoll, dass Max keine verzögerte Ausführung verwendet, da es ein T nicht IEnumerable zurückgibt. Eine andere Art zu betrachten ist, dass keiner von ihnen wirklich verzögerte Ausführung; Sie alle geben sofort ein Objekt zurück, das sich beim Aufzählen unterschiedlich verhält.Das Ergebnis von Max() wird jedoch nicht aufgezählt. Während dies die meiste Zeit nicht die beste Art ist, über Dinge nachzudenken, kann es helfen, wenn man versucht, sich zu erinnern, was verzögert wird oder nicht. –