Freigeben über


Ineffiziente unveränderliche Sammlungsänderungen

In diesem Artikel werden Leistungserkenntnisse beim Ändern unveränderlicher Auflistungen wie z ImmutableList<T>. B. beschrieben.

Ursache

Das Ändern einer unveränderlichen Auflistung (z Add. B. , Removeoder Insert) führt zu einer langsamen Leistung.

Beschreibung der Leistungserblicke

Jede Änderung an einer unveränderlichen Auflistung erstellt eine neue Kopie der Auflistung, was zu übermäßigen Speicherzuweisungen und CPU-Auslastung führt. Dies ist besonders ineffizient, wenn Änderungen häufig, in Schleifen oder in leistungskritischen Codepfaden ausgeführt werden.

Verwenden Sie nach Möglichkeit eine änderbare Sammlung (z List<T>. B. ) während der Konstruktion oder in heißen Pfaden, und konvertieren Sie sie nur bei Bedarf in eine unveränderliche Sammlung. Veränderbare Sammlungen ermöglichen effiziente direkte Änderungen, während unveränderliche Auflistungen am besten für Threadsicherheit und Szenarien verwendet werden, in denen Änderungen selten sind.

So untersuchen Sie eine Warnung

Klicken Sie im Tool "CPU-Auslastung" auf " Quellcode anzeigen ", um zu ermitteln, wo unveränderliche Auflistungen geändert werden. Umgestalten Sie nach Möglichkeit eine veränderbare Sammlung in leistungsabhängigem Code, und konvertieren Sie sie nur bei Bedarf in eine unveränderliche Auflistung.

Siehe auch

Dokumentation zu unveränderlichen Sammlungen