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 algumas regras básicas em seu código-fonte. Em alguns programas, é importante examinar atentamente o código e usar criadores de perfil para verificar se eles estão executando o mais rápido possível. Em outros programas, você não precisa executar essa otimização porque o código é executado em velocidade aceitável conforme ele é gravado. Este artigo lista algumas áreas comuns em que o desempenho pode ser prejudicado e dicas para melhorá-lo, bem como links para tópicos adicionais sobre desempenho. Para obter mais informações sobre como planejar e medir o 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 é convertido, um objeto totalmente novo deve ser criado. Isso pode levar até 20 vezes mais tempo que a atribuição de uma 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 Conversões boxing e unboxing.

Cadeias de caracteres

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. 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 Destruidores e Tempo de vida do objeto: como os objetos são criados e destruídos.

Outros recursos

Veja também