Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano szczegółowe informacje o wydajności alokacji tablic o zerowej długości.
Przyczyna
Przydzielanie tablic o zerowej długości na platformie .NET może prowadzić do niepotrzebnych alokacji pamięci. Te alokacje, choć małe, mogą gromadzić się i powodować problemy z wydajnością, szczególnie w aplikacjach z ograniczonymi pamięciami lub o wysokiej wydajności.
Opis szczegółowych informacji o wydajności
Po przydzieleniu tablicy o zerowej długości następuje alokacja pamięci, która nie jest konieczna. Zamiast tworzyć nową tablicę, bardziej wydajne jest użycie statycznie przydzielonego pustego wystąpienia tablicy udostępnionego przez metodę Array.Empty<T>(). Ta metoda zwraca buforowana, pustą tablicę określonego typu, unikając narzucenia nowej alokacji.
Jak zbadać ostrzeżenie
Kliknij link Zbadaj zbadaj, aby przejść do widoku alokacji pokazującego przydzieloną tablicę o zerowej długości. Dwukrotne kliknięcie alokacji spowoduje wyświetlenie ścieżek kodu, w których występują alokacje. Rozważ zmniejszenie tych alokacji przy użyciu statycznie przydzielonego pustego wystąpienia tablicy udostępnionego przez Array.Empty<T>().
Począwszy od programu Visual Studio w wersji 18.0.0 (wersja zapoznawcza 1 lub nowsza), jeśli opcja Copilot jest włączona, zostanie wyświetlony
Wybierz przycisk, a Copilot udostępnia szczegółową analizę wzorców alokacji i sugeruje poprawki kodu w celu zoptymalizowania użycia pamięci.
Oto przykład pustej alokacji tablicy i jego rozwiązania:
Naruszenie:
class Example
{
public void Method()
{
var array = new int[0];
}
}
Rezolucja:
class Example
{
public void Method()
{
var array = Array.Empty<int>();
}
}
Dodatkowe zasoby
Aby uzyskać więcej informacji na temat unikania alokacji tablic o zerowej długości i innych najlepszych rozwiązań dotyczących wydajności, zobacz następujący zasób:
CA1825: Unikaj alokacji tablicy o zerowej długości (analiza kodu)
Postępując zgodnie z tymi wytycznymi, możesz upewnić się, że aplikacja jest zoptymalizowana pod kątem wydajności i unika niepotrzebnych obciążeń związanych z pamięcią.