Dies ist eher eine akademische Frage zur Leistung als ein realistisches "Was soll ich verwenden?", Aber ich bin neugierig, da ich mich nicht viel mit ILs beschäftige, um zu sehen, was konstruiert ist und auf dem ich keinen großen Datensatz habe Hand zum Profil gegen.Was ist schneller in einer Schleife: eine Eigenschaft zweimal aufrufen oder die Eigenschaft einmal speichern?
So, das ist schneller:
List<myObject> objs = SomeHowGetList();
List<string> strings = new List<string>();
foreach (MyObject o in objs)
{
if (o.Field == "something")
strings.Add(o.Field);
}
oder:
List<myObject> objs = SomeHowGetList();
List<string> strings = new List<string>();
string s;
foreach (MyObject o in objs)
{
s = o.Field;
if (s == "something")
strings.Add(s);
}
Beachten Sie, dass ich will nicht wirklich die Auswirkungen auf die Leistung der string.Add (n) wissen (wie was auch immer ausgeführt werden muss, kann nicht wirklich geändert werden), nur der Leistungsunterschied zwischen der Einstellung jeder Iteration (sagen wir mal, dass s irgendein primitiver Typ oder String sein kann) und dem Aufruf des Getter auf dem Objekt bei jeder Iteration.
Warum fragen Sie _us_? Du hast den Code geschrieben. Stoppen Sie eine Stoppuhr, laufen Sie eine Milliarde Male in beide Richtungen, und dann wissen Sie, was schneller ist. –