Ich habe eine Reihe von Modellobjekten mit einer öffentlichen Booleschen Eigenschaft IsVisible
. Alles, was ich tun muss, ist herauszufinden, ob mindestens einer der Sätze diesen Wert auf TRUE
gesetzt hat. Mit anderen Worten, wenn ich 10.000 Objekte habe, aber das zweite ist true
, muss ich nicht durch die anderen 9.998 drehen. Ich habe bereits meine Antwort.Einfache Überprüfung, um festzustellen, ob mindestens ein Objekt in einer Gruppe einen Eigenschaftswert von TRUE hat
Jetzt weiß ich, ich könnte meine eigene Iterationsfunktion schreiben und beim ersten 'True
'-Wert ausbrechen, aber ich hoffe, das ist etwas, was LINQ tun kann. Eigentlich muss es nicht einmal LINQ sein. Irgendwelche Vorschläge sind willkommen.
BTW, die Sprache der Wahl ist C#.
Update:
meinen letzten Beitrag hier. Ich habe Testcode und Timings hinzugefügt. Es scheint, dass LINQ im Vergleich zum Test einfach verdammt schlecht ist. Klar, es ist einfacher zu schreiben, aber in missionskritischen Timings bin ich mir nicht mehr sicher.
Was mich überraschte, ist die meiste Zeit habe ich diese, Enumeration gewonnen und durch einen fairen Clip, aber aus irgendeinem Grund, wenn ich den Test in mehreren Durchgängen gewickelt, sieht es aus, um mit einer Indexierung geschaltet haben Cached zählen als am schnellsten.
Ich bemerkte auch, dass, wenn ich nicht alles auf 'falsch' zurücksetze, alle verbleibenden/wiederholten Tests viel schneller scheinen. Irgendwie ändert sich alles, wenn man alles auf FALSE setzt (was absichtlich zu viel ist, um genau das zu testen ...).
Interessant. Ich bin mir nicht sicher, auf welche Art ich jetzt gehen werde. Diese ist nicht ein missionskritisches System, also vielleicht werde ich für Lesbarkeit gehen, aber immer noch. Interessant.
Bei der Optimierung müssen Sie die Ausführungsgeschwindigkeit gegen die Programmierkosten abwägen. Die meisten Entwicklungsmanager würden lieber mehr Server kaufen, als mehr Programmierer bezahlen - und nur ein winziger Bruchteil des Codes läuft auf einem kritischen Pfad. Häufig wird Code, der am schnellsten zu schreiben und zu testen ist, am schnellsten über den Code ausgeführt, wenn alle Kosten (einschließlich Entwicklungskosten) berücksichtigt werden. Nach meiner Erfahrung ist Linq viel schneller zu schreiben, aber langsamer ausgeführt. Es gewinnt immer noch fast die ganze Zeit nach meiner Erfahrung. – Slaggg
Slagg, habe noch nicht genug Punkte, um Kommentare abzugeben, aber weißt du, wenn ich das täte, würdest du dafür einen bekommen. Vielleicht ist es offensichtlich, aber die Prägnanz ist wirklich herausragend (nicht unähnlich dem Punkt, den es auch macht! Klug mein Freund! Sehr schlau!) – MarqueIV