Avisos de desempenho
Avisos de desempenho oferecem suporte a aplicativos e bibliotecas de alto desempenho.
Nesta seção
Regra |
Descrição |
---|---|
Projeções de duplicados diminuir o desempenho, especialmente quando as projeções são realizadas em instruções de iteração compact. |
|
Uma assinatura do método inclui um parâmetro que não é usado no corpo do método. |
|
Um campo é declarado estática e somente leitura (Shared e somente leitura em Visual Basic) e é inicializada com um valor que seja computáveis em tempo de compilação.Como o valor que é atribuído ao campo de destino é computáveis em tempo de compilação, altere a declaração para uma const (Const em Visual Basic) de campo para que o valor é calculado em tempo de compilação em vez de em tempo de execução. |
|
Variáveis locais não utilizadas e atribuições desnecessárias aumentam o tamanho de um assembly e diminuem o desempenho. |
|
Um novo objeto é criado, mas nunca usou, um método que cria e retorna uma nova seqüência de caracteres é chamado e a nova seqüência nunca é usada ou um método de modelo de objeto componente (COM) ou P/Invoke retorna um código de erro ou o HRESULT que nunca é usado. |
|
Uma otimização de desempenho comum é armazenar um valor em um registro do processador, em vez de memória, o que é conhecido como "enregistering o valor".Para aumentar as chances de que todas as variáveis locais são não registrados, limite o número de variáveis locais para 64. |
|
Quando um tipo declara um construtor estático explícito, o compilador just-in-time (JIT) adiciona uma verificação para cada método e instância o construtor estático do tipo para certificar-se de que o construtor estático anteriormente foi chamado.Verificações do construtor estático podem diminuir o desempenho. |
|
Membro (nível de assembly) privado ou interno não tem os chamadores no assembly, ele não é invocado pelo common language runtime e ele não é invocado por um delegado. |
|
Uma instância de um tipo de nível de assembly não é criada pelo código no assembly. |
|
O .NET Framework biblioteca de classe fornece métodos para recuperar os atributos personalizados.Por padrão, esses métodos pesquisar a hierarquia de herança de atributo.Lacrar o atributo elimina a pesquisa por meio da hierarquia de herança e pode melhorar o desempenho. |
|
Uma matriz denteada é uma matriz cujos elementos são matrizes.As matrizes que compõem os elementos podem ser de tamanhos diferentes, o que podem resultar em menos perda de espaço para alguns conjuntos de dados. |
|
É igual a do CA1815: Substituição e o operador equals em tipos de valor |
Para tipos de valor, a implementação herdada de Equals usa a biblioteca de reflexão e compara o conteúdo de todos os campos.A reflexão é dispendiosa e comparar todos os campos de igualdade talvez seja desnecessário.Se você espera que os usuários para comparar ou classificar instâncias, ou usar instâncias como chaves de tabela de hash, seu tipo de valor deve implementar Equals. |
Um método que é uma implementação do Dispose não chama GC.SuppressFinalize ou um método que não é uma implementação do Dispose chama GC.SuppressFinalize ou um método chama GC.SuppressFinalize e passa a algo diferente de (-Me Visual Basic). |
|
Matrizes que são retornados pelas propriedades não estão protegidos contra gravação, mesmo se a propriedade é somente leitura.Para manter a matriz à prova, a propriedade deve retornar uma cópia da matriz.Normalmente, os usuários não compreenderá as implicações de desempenho adverso de chamar essa propriedade. |
|
CA1820: Testar usando o comprimento da seqüência de cadeias de caracteres vazias |
Comparando seqüências de caracteres usando a propriedade String. length ou o método é significativamente mais rápida do que o uso é igual a string. IsNullOrEmpty. |
Sempre que possível, evite finalizadores causa da sobrecarga de desempenho adicional envolvido na vida útil do objeto de controle.Um finalizador vazio incorre adicionado a sobrecarga sem qualquer benefício. |
|
Membros que acessar métodos de instância de dados ou chamada de instância não podem ser marcados como estáticos (compartilhado no Visual Basic).Depois de marcar os métodos como estático, o compilador emitirá o site de chamada nonvirtual para esses membros.Isso pode dar um ganho de desempenho mensuráveis para código de desempenho é fundamental. |
|
Campos particulares foram detectados que parecem não ser acessados no assembly. |
|
CA1824: Marcar assemblies com NeutralResourcesLanguageAttribute |
O atributo NeutralResourcesLanguage informa o ResourceManager da linguagem que foi usado para exibir os recursos de uma cultura neutra para um assembly.Isso melhora o desempenho da pesquisa do primeiro recurso que você deseja carregar e pode reduzir o seu conjunto de trabalho. |