Desempenho (C# e Visual Basic)

O termo desempenho geralmente refere-se a 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 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 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. É geralmente melhor escrever código que é legível, robusto e mantido pelo mesmo que seja um pouco mais lento do que o código mais otimizado, 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, identificar os locais específicos onde o desempenho pode ser melhorado e quais problemas de desempenho são a principal causa do problema. 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 de 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 a conversão 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 quanto uma atribuição. Para obter mais informações, consulte Boxing e Unboxing.

Sequências

Quando você concatenar a 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 seqüências de caracteres (guia de programação TRANSLATION FROM VPE FOR CSHARP) 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 perda de desempenho. Para obter mais informações, consulte Destructors (guia de programação C#) e Vida útil de objeto: Como os objetos são criados e destruídos (Visual Basic).

Outros recursos

Consulte também

Conceitos

Guia de Programação C#

Outros recursos

Conceitos de programação

Guia de programação Visual Basic