Compartilhar via


Regras de desempenho de uso do .NET Framework

As regras de desempenho na categoria de uso do .NET framework identificam os métodos específicos que podem ser otimizados e também identificado um padrão mais gerais de uso, como coleta de lixo e a contenção de bloqueio, que podem ser investigadas para problemas de desempenho.

DA0001: usar StringBuilder para concatenações

As chamadas a String.Concat(String, String) é uma proporção significativa de dados de perfil.Use a classe de StringBuilder para construir cadeias de caracteres de vários segmentos.

DA0005: coleções de GC2 frequentes

Um número relativamente alto de objetos de memória do .NET está sendo recuperado na coleta de lixo de geração 2.Se breves objetos muitos sobrevivem à coleção de geração 1, o custo de gerenciamento de memória podem se tornar facilmente excessivos.

DA0006: substituir Equals() para tipos de valor

Chamadas para o método de Equals ou operadores de igualdade de um tipo de valor utilitário é uma proporção significativa de dados de perfil.Considere implementar um método mais eficiente.

DA0007: evitar usar exceções no fluxo de controle

Uma taxa alta de manipuladores de exceção do .NET Framework foi chamada na criação de perfis de dados.Considere usar outra lógica de fluxo de controle para reduzir o número de exceções emitidas.

DA0010: função GetHashCode dispendiosa

Chamadas para o método de GetHashCode de classificação são uma proporção significativa de dados de perfil ou o método de GetHashCode aloca memória.Reduzir a complexidade do método.

DA0011: função CompareTo dispendiosa

O método de CompareTo de tipo é caro ou o método aloca memória.Reduzir a complexidade do método de CompareTo .

DA0012: volume significativo de reflexão

Chama os métodos de System.Reflection como o InvokeMember e o GetMember ou métodos de tipo como o InvokeMember é uma proporção significativa de dados de perfil.Quando possível, considere substituir esses métodos com associação inicial dos métodos de assemblies dependentes.

DA0013: uso alto de String.Split ou String.Substring

Chama os métodos de String.Split ou de Substring são uma parte significativa de dados de perfil.Considere usar IndexOf ou IndexOfAny se você estiver testando para a existência de uma subcadeia de caracteres em uma cadeia de caracteres.

DA0018: aplicativo de 32 bits em execução em limites de memória gerenciada do processo

Os dados do sistema coletados durante analisar executado indicam que os heaps de memória do .NET Framework aproximaram o tamanho máximo que os heaps gerenciados podem acessar em um processo de 32 bits.Considere analisar novamente usando memória .NET que o método que analisa e otimiza o uso de recursos gerenciados pelo aplicativo.

DA0021: taxa alta de coletas de lixo Gen 1

Um número relativamente alto de objetos de memória do .NET está sendo recuperado na coleta de lixo de geração 1.Se breves objetos muitos sobrevivem à coleção de geração 0, o custo de gerenciamento de memória podem se tornar facilmente excessivos.

DA0022: taxa alta de coletas de lixo Gen 2

Um número elevado de objetos de memória do .NET está sendo recuperado na coleta de lixo de geração 2.Se breves objetos muitos sobrevivem à coleção de geração 1, o custo de gerenciamento de memória podem se tornar facilmente excessivos.Esta regra é disparada quando a taxa de disputas de bloqueio exceder o valor limite superior da regra DA0005.

DA0023: tempo de CPU GC alto

Os dados de desempenho do sistema coletados durante a análise indica que a quantidade de tempo que é gastada na coleta de lixo é significativa comparado com o tempo de processamento total do aplicativo.

DA0024: tempo de GPU GC excessivo

Os dados de desempenho do sistema coletados durante a análise indica que a quantidade de tempo que é gastada na coleta de lixo é excessivamente - a elevação comparada com o tempo de processamento total do aplicativo.Esta regra é disparada quando o tempo gasto na coleta de lixo exceder o valor limite superior da regra DA0023.

DA0038: taxa alta de contenções de bloqueio

Os dados de desempenho do sistema coletados com os dados de perfil indica que uma taxa alta significativamente de disputas de bloqueio ocorreu durante a execução do aplicativo.Considere analisar novamente usando a simultaneidade que analisa o método para localizar a causa de disputas.

DA0039: taxa muito alta de contenções de bloqueio

Os dados de desempenho do sistema coletados com os dados de perfil que indicam excessivamente - a taxa alta de disputas de bloqueio ocorreu durante a execução do aplicativo.Considere analisar novamente usando a simultaneidade que analisa o método para localizar a causa de disputas.Esta regra é disparada quando a taxa de disputas de bloqueio exceder o valor limite superior da regra DA0038.