Partilhar via


Desempenho (C# e Visual Basic)

O termo desempenho geralmente refere-se à velocidade de execução de um programa. Às vezes, você pode aumentar a velocidade de execução seguindo algumas regras básicas no seu código-fonte. Em alguns programas, é importante examinar detalhadamente o código e usar geradores de perfis para certificar-se de que ele seja executado mais rápido possível. Em outros programas, não é necessário realizar essa otimização, pois o código está sendo executado aceitavelmente rápido conforme foi escrito.

Quando você medir e otimizar o desempenho, você deve seguir estas orientações gerais:

  • Comece definindo metas de desempenho e medir o desempenho do programa para determinar quando seu código é não cumprimento dessas metas.

  • Escreva seu código inicialmente para que ele está correto, segue os princípios de um bom design e expressa claramente a sua intenção. Otimize posterior somente se você determinar que ele não atende os objetivos de desempenho. Código que é otimizado para desempenho geralmente é mais difícil de ler e manter. Ele é geralmente melhor escrever código que é legível, robusto e fácil de manter, mesmo que seja um pouco mais lento do que o código mais otimizado que você poderia escrever.

  • Se você deve otimizar, inicie com as partes mais lentas do seu programa pela primeira vez. Se você determinar que um programa não atinge as metas de desempenho, identifica os locais específicos onde o desempenho pode ser melhorado e quais problemas de desempenho são a principal causa do problema. Ele geralmente não faz sentido para otimizar um método que é chamado raramente ou otimizar o método a ser executado em menos de 50 milissegundos que o programa como um todo tenha que esperar 30 segundos para o método b para executar em outro thread.

Boxing e Unboxing

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

Sequências

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

Destructors

Destruidores vazios não devem ser usados. Quando uma classe contém um destruidor, uma entrada é criada na fila de finalização. Quando o destruidor é chamado, o coletor de lixo é chamado para processar a fila. Se o destruidor estiver vazio, isso simplesmente resulta em uma perda de desempenho. Para obter mais informações, consulte Destruidores (Guia de Programação em C#) e Tempo de vida do objeto: como os objetos são criados e destruídos (Visual Basic).

Outros recursos

Consulte também

Conceitos

Guia de Programação em C#

Outros recursos

Conceitos de programação

Guia de programação do Visual Basic