Avisos de desempenho
Os avisos de desempenho dão suporte a bibliotecas de alto desempenho e aplicativos.
Nesta seção
Regra |
Descrição |
---|---|
As conversões duplicados diminui o desempenho, principalmente quando as conversões são executadas em instruções compactas da iteração. |
|
Uma assinatura de método inclui um parâmetro que não é usado no corpo do método. |
|
Um campo é declarado estático e somente leitura (compartilhado e readonly em Visual Basic), e iniciado com um valor que é computável em tempo de compilação.Como o valor atribuído ao campo de destino é computável em tempo de compilação, altere a declaração a um campo de const (const em Visual Basic) de modo que o valor é computado em tempo de compilação em vez de em tempo de execução. |
|
As variáveis locais não usado e as atribuições desnecessários aumenta o tamanho de um desempenho do assembly e a diminuição. |
|
Um novo objeto é criado mas nunca usado, ou um método que cria e retorna uma nova cadeia de caracteres sejam chamados e a nova cadeia de caracteres é usada, nunca ou um método do Component Object Model (COM) ou de P/Invoke retornam um HRESULT ou um código de erro que nunca sejam usados. |
|
Uma otimização comuns de desempenho é armazenar um valor em um registro de processador em vez de memória, que é chamado “enregistering o valor”. Para aumentar a possibilidade de que todas as variáveis locais enregistered, limite o número de variáveis locais a 64. |
|
CA1810: inicializar campos estáticos de tipo de referência embutido |
Quando um tipo declara um construtor estático explícito, o compilador de (JIT) just-in-time adiciona uma verificação a cada construtor de método estático e da instância do tipo para garantir que o construtor estático esteve chamado anteriormente.As verificações estáticos de construtor podem diminuir o desempenho. |
Um membro particular ou interno de nível de assembly () não tem chamadores no assembly, não é invocado por Common Language Runtime, e não é invocado por um representante. |
|
Uma instância de um tipo de nível de assembly não é criada pelo código no assembly. |
|
A biblioteca de classes de .NET Framework fornece métodos para recuperar atributos personalizados.Por padrão, esses métodos da hierarquia de herança do atributo.Selar o atributo elimina a pesquisa pela hierarquia de herança e pode melhorar o desempenho. |
|
CA1814: preferir matrizes denteadas em relação às multidimensionais |
Uma matriz denteada é uma matriz cujos elementos sejam matrizes.As matrizes que compõem os elementos podem ter os tamanhos diferentes, o que pode resultar em menos espaço desperdiçado para alguns conjuntos de dados. |
CA1815: substituir igualdades e igualdades de operador em tipos de valor |
Para tipos de valor, a implementação herdada de igual usa a biblioteca de reflexão e compara o conteúdo de todos os campos.Reflexão é computacionalmente cara, e comparar cada campo por igualdade pode ser desnecessário.Se você espera que os usuários comparar ou classificar instâncias, ou se usar instâncias como a tabela de hash chaves, seu tipo de valor deve implementar iguais. |
Um método que é uma implementação Dispose não chama GC.SuppressFinalize, ou um método que não é uma implementação Dispose chama GC.SuppressFinalize, ou chamadas GC.SuppressFinalize de um método e passa algo diferente do (i em Visual Basic). |
|
As matrizes retornadas por propriedades para gravação não são protegidas, mesmo se a propriedade é somente leitura.Para manter a matriz inalterável, a propriedade deve retornar uma cópia da matriz.Normalmente, os usuários não adversas integrarem as implicações de desempenho de chamar essas propriedades. |
|
CA1820: teste para cadeias de caracteres vazias usando o comprimento da cadeia de caracteres |
Comparar cadeias de caracteres usando a propriedade de String.Length ou o método de String.IsNullOrEmpty é significativamente mais rápida do que usando iguais. |
Sempre que possível, para evitar finalizers devido à sobrecarga adicional de desempenho que é envolvida no tempo de vida do objeto de rastreamento.Um finalizador vazia incorre a sobrecarga adicionada sem nenhum benefício. |
|
Os membros que não acessam dados da instância ou métodos da instância de chamada podem ser marcados como estático (compartilhada em Visual Basic).Depois que você marca os métodos como estático, o compilador emitirá sites nonvirtual da chamada para esses membros.Isso pode proporcionar um ganho mensurável de desempenho para o código de acentos. |
|
Os campos particulares foram detectados que não parece ser acessados no assembly. |
|
CA1824: marcar assemblies com NeutralResourcesLanguageAttribute |
O atributo de NeutralResourcesLanguage informa o ResourceManager de idioma que foi usada para exibir os recursos de uma cultura neutra para um assembly.Isso melhora o desempenho da pesquisa para o primeiro recursos que você carrega e reduzir seu conjunto de trabalho. |