Udostępnij przez


Nieefektywne niezmienne modyfikacje kolekcji

W tym artykule opisano szczegółowe informacje o wydajności podczas modyfikowania niezmiennych kolekcji, takich jak ImmutableList<T>.

Przyczyna

Modyfikowanie niezmiennej kolekcji (takiej jak Add, Removelub Insert) powoduje niską wydajność.

Opis szczegółowych informacji o wydajności

Każda modyfikacja kolekcji niezmiennej tworzy nową kopię kolekcji, co powoduje nadmierne alokacje pamięci i użycie procesora CPU. Jest to szczególnie nieefektywne, gdy modyfikacje są wykonywane często, w pętlach lub w ścieżkach kodu o znaczeniu krytycznym dla wydajności.

Jeśli to możliwe, użyj kolekcji modyfikowalnej (takiej jak List<T>) podczas budowy lub w ścieżce gorącej i przekonwertuj na niezmienialny zbiór tylko wtedy, gdy jest to konieczne. Kolekcje modyfikowalne umożliwiają wydajne modyfikacje w miejscu, podczas gdy kolekcje niezmienne są najlepiej używane w przypadku bezpieczeństwa wątków i scenariuszy, w których modyfikacje są rzadko używane.

Jak zbadać ostrzeżenie

W narzędziu Użycie procesora CPU kliknij pozycję Wyświetl kod źródłowy , aby znaleźć, gdzie są modyfikowane kolekcje niezmienne. Jeśli to możliwe, refaktoryzacja użycia kolekcji modyfikowalnej w kodzie uwzględniającym wydajność i konwertowanie na niezmienialny zbiór tylko wtedy, gdy jest to konieczne.

Zobacz także

Dokumentacja kolekcji niezmiennych