-
Eine kleine Änderung im Code
verhindert starken Speicher Churn.
-
Hier ist die Vergleichansicht.
-
Statt eine Zeile Zellwert für
Zellwert zusammenzubauen,
-
konstruiieren wir mit einer
StringBuilder Instanz
-
jede Zeile mit einem String.
-
Der StringBuilder wird
außerhalb der Schleife instanziiert,
-
sodass nur eine
Speicherzuweisung erfolgt.
-
Nun haben wir einen
Zwischenspeicher,
-
den wir in jeder
Iteration der Schleife leeren
-
und einen einzigen Ziffernstring
für jede Zeile anhängen.
-
In den Anmerkungen sind mehr
Details zu diesem Codesegment.
-
Okay, Zeit zum Prüfen.
-
Ladet jetzt den verbesserten Code,
-
memory_churn_optimized, in den
Trace View und Memory Monitor,
-
die zeigen, dass wir die Menge
an GC hier verringert haben.
-
Ihr könnt das auch
im Allocation Tracker sehen.
-
Wenn ihr
den Allocation Tracker nutzt,
-
oder im Trace View oder Memory
Monitor etwas unerwartetes seht,
-
teilt den Screenshot eures Outputs
im Diskussionsforum.
-
Es interessiert uns,
was bei euch rauskommt.
-
Bei uns bleibt der Perf Pirat
trotz dieser Änderungen hängen.
-
Aber dieses mal kürzer.
-
Diese Funktion wäre demnach
wohl ein guter Kandidat,
-
um in den Hintergrund
zu schieben.