Compartilhar via


Dicas de desempenho do .NET

O termo desempenho geralmente se refere à velocidade de execução de um programa. Às vezes, você pode aumentar a velocidade de execução seguindo determinadas regras básicas no código-fonte. Em alguns programas, é importante examinar o código de perto e usar profilers para garantir que ele esteja em execução o mais rápido possível. Em outros programas, você não precisa executar essa otimização, pois o código está sendo executado de forma aceitável conforme está escrito. Este artigo lista algumas áreas comuns em que o desempenho pode sofrer e dicas para melhorá-lo, bem como links para tópicos de desempenho adicionais. Para obter mais informações sobre planejamento e medição de desempenho, consulte Desempenho

Conversão boxing e unboxing

É melhor evitar o uso de tipos de valor em situações em que eles devem sofrer conversão boxing um grande número de vezes, por exemplo, em classes de coleções não genéricas como System.Collections.ArrayList. Você pode evitar a conversão boxing de tipos de valor por meio de coleções genéricas como System.Collections.Generic.List<T>. As conversões boxing e unboxing são processos computacionalmente dispendiosos. Quando um tipo de valor é colocado em caixa, um objeto totalmente novo deve ser criado. Isso pode levar até 20 vezes mais do que uma atribuição de referência simples. Ao fazer unboxing, o processo de conversão pode demorar quatro vezes mais que uma atribuição. Para obter mais informações, consulte Boxing e Unboxing.

Cordas

Ao concatenar um grande número de variáveis de cadeia de caracteres, por exemplo em um loop estreito, use System.Text.StringBuilder em vez do operador + de C# ou dos operadores de concatenação do Visual Basic. Para obter mais informações, consulte Como concatenar várias cadeias de caracteres e operadores de concatenação no Visual Basic.

Finalizadores

Finalizadores vazios não devem ser usados. Quando uma classe contém um finalizador, uma entrada é criada na fila Finalize. Quando o finalizador é chamado, o coletor de lixo é invocado para processar a fila. Se o destruidor estiver vazio, isso apenas resultará em uma perda de desempenho. Para obter mais informações, consulte Finalizadores e tempo de vida do objeto: como os objetos são criados e destruídos.

Outros recursos

Consulte também