Der beste Weg zu überprüfen ist, indem Sie beide Methoden in einer Schleife, etwa 100.000 pro. Messen Sie die Zeit, die jede 100.000 Iterationen benötigen, und vergleichen Sie sie. Ich denke nicht, dass es einen großen Unterschied gibt. Aber es gibt einen kleinen Unterschied. Das erste Beispiel enthält so viele Variablen wie die Anzahl der Iterationen. Das zweite Beispiel hat nur eine Variable. Der Compiler ist schlau genug, hier einige Optimierungen vorzunehmen, damit Sie keine Geschwindigkeitsverbesserung bemerken. Wenn Sie jedoch nicht das letzte in der Schleife generierte Objekt verwenden möchten, wenn Sie sich erneut außerhalb der Schleife befinden, wäre die erste Lösung besser. In der zweiten Lösung dauert es nur eine Weile, bis der Garbage Collector das letzte erstellte Objekt freigibt. Im ersten Beispiel wird der Garbage Collector beim Freigeben des Objekts etwas schneller sein. Es hängt vom Rest des Codes ab, aber wenn Sie viele Daten in diesem StringBuilder-Objekt speichern, kann das zweite Beispiel diesen Speicher viel länger halten, wodurch die Leistung Ihres Codes nach Verlassen der Schleife sinkt!
Dann wieder, wenn die Objekte 100 KB auffressen und Sie 16 GB in Ihrer Maschine haben, kümmert sich niemand ... Der Müllsammler wird es schließlich wieder freigeben, wahrscheinlich sobald Sie die Methode verlassen, die diese Schleife enthält.
Ähnlich wie http://stackoverflow.com/questions/2447475/best-practice-for-creating-objects-used-in-for-foreach-loops –
Ein nicht verwandter Fehler ist, dass die zweite Version auf Null initialisiert werden sollte um eine Überzuteilung zu vermeiden. –