Compartilhar via


Alocações de matriz de comprimento zero

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

Causa

Alocar 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 com restrição de memória ou de alto desempenho.

Descrição do insight de desempenho

Quando uma matriz de comprimento zero é alocada, ela 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 em que 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 Versão Prévia 1 ou posterior, se o Copilot estiver habilitado, você verá o botão Perguntar Captura de Tela do Copilot do Ask Copilot. 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.