Partilhar via


Alocações de array de comprimento zero

Este artigo descreve informações de desempenho para alocações de matriz de comprimento zero.

Causa

A alocação de matrizes de comprimento zero no .NET pode levar a alocações de memória desnecessárias. Essas alocações, embora pequenas, podem se acumular e causar problemas de desempenho, especialmente em aplicativos de alto desempenho ou com restrição de memória.

Descrição do insight de desempenho

Quando uma matriz de comprimento zero é alocada, isso resulta em uma alocação de memória que não é necessária. Em vez de criar uma nova matriz, é mais eficiente usar a instância de matriz vazia alocada estaticamente fornecida pelo método Array.Empty<T>(). Esse método retorna uma matriz vazia em cache do tipo especificado, evitando a sobrecarga de uma nova alocação.

Como investigar um aviso

Clique no link Investigar para ir para a exibição de Alocação de mostrando a matriz de comprimento zero alocada. Clicar duas vezes na alocação mostra os caminhos de código onde as alocações estão ocorrendo. Considere reduzir essas alocações usando a instância de matriz vazia alocada estaticamente fornecida pelo Array.Empty<T>().

A partir do Visual Studio versão 18.0.0 Preview 1 ou posterior, se o Copilot estiver habilitado, você verá a captura de tela Ask Copilot do botão Ask Copilot. botão. Selecione o botão e o Copilot fornece uma análise detalhada dos padrões de alocação e sugere correções de código para otimizar o uso da memória.

Aqui está um exemplo de uma alocação de matriz vazia e sua resolução:

Violação:

class Example
{
    public void Method()
    {
        var array = new int[0];
    }
}

Resolução:

class Example
{
    public void Method()
    {
        var array = Array.Empty<int>();
    }
}

Recursos adicionais

Para obter mais informações sobre como evitar alocações de matriz de comprimento zero e outras práticas recomendadas de desempenho, consulte o seguinte recurso:

CA1825: Evite alocações de matriz de comprimento zero (análise de código)

Seguindo essas diretrizes, você pode garantir que seu aplicativo seja otimizado para desempenho e evite sobrecarga de memória desnecessária.