Desempenho (guia de programação C#)

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 em seu código-fonte.Em alguns programas, é importante examinar detalhadamente o código e usar geradores de perfis para certificar-se de que está sendo executado execução sistema autônomo fsistema autônomot sistema autônomo possíveis.Em outros programas, não é necessário executar essa otimização porque o código está sendo executado forma aceitável fsistema autônomot sistema autônomo é gravada.

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

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

  • gravar seu código inicialmente, de modo que esteja correto, segue os princípios de mercadoria design e expressa claramente 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 esteja legível, robusto e fácil de manter, mesmo que ele é um pouco mais lento que o código mais otimizado que você poderia escrever.

  • Se você precisa otimizar, comece com as partes mais lentas do seu programa primeiro.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 os problemas de desempenho são principais causas do problema.Geralmente não faz sentido para otimizar um método chamado raramente, ou para otimizar o método A ser executado em menos de 50 milissegundos se o programa sistema autônomo um todo tem de esperar 30 segundos para o método B para executar em outro thread.

conversão boxing e conversão conversão unboxing

É melhor evitar o uso de valor tipos em situações em que devem ser in a box um alto número de vezes, por exemplo, em classes de coleções não genéricas, sistema autônomo System.Collections.ArrayList. Você pode evitar a conversão boxing dos tipos de valor usando coleções genéricas, sistema autônomo System.Collections.Generic.List<T>. conversão boxing e conversão conversão unboxing são processos computacionalmente caros.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 simples referência atribuição.Quando conversão conversão unboxing, o processo de conversão pode demorar quatro vezes, desde que uma atribuição.Para obter mais informações, consulte conversão boxing e conversão conversão unboxing.

Sequências

Quando você concatenar um grande número de variáveis de seqüência de caracteres, por exemplo em um loop apertado, usar System.Text.StringBuilder instead of o translation from VPE for Csharp operador +.Para obter mais informações, consulte Como: Concatenar várias cadeias de caracteres (guia de programação translation from VPE for Csharp).

Destructors

Destruidores vazios não devem ser usados.Quando uma classe contém um destruidor, uma entrada é criada na fila de finalizar.Quando o destruidor é chamado, o coletor de lixo é chamado para processar a fila.Se o destruidor estiver vazio, isso simplesmente resultados em perda de desempenho.Para obter mais informações, consulte Destruidores.

Outros recursos

Consulte também

Conceitos

Guia de Programação C#

Referência

Segurança (guia de programação C#)

Date

History

Motivo

Julho de 2008

Informações adicionadas à seção sobre conversão boxing e conversão conversão unboxing.

Aprimoramento de informações.

Julho de 2008

Adicionado a seção sobre seqüências de caracteres.

Aprimoramento de informações.

Julho de 2008

Informações adicionadas à introdução.

Aprimoramento de informações.