Udostępnij przez


Alokacje tablic o zerowej długości

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 przycisk Ask Copilot (Zapytaj copilot). 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ą.