Правила производительности использования в .NET Framework
Правила производительности в категории "Использование .NET Framework" определяют конкретные методы, допускающие оптимизацию, а также более общие шаблоны использования, такие как сбор мусора и конфликты блокировки, которые можно изучить на предмет наличия проблем производительности.
Вызовы String.Concat(String, String) составляют значительную часть данных профилирования. Для построения строк из нескольких сегментов рекомендуется использовать StringBuilder. |
|
В процессе сборки мусора 2-го поколения было удалено относительно большое число объектов памяти .NET. Если слишком много объектов с небольшим временем существования остаются после сборки поколения 1, затраты на управление памятью могут оказаться слишком высокими. |
|
Вызовы метода Equals или операторов равенства открытого типа значения составляют значительную часть данных профилирования. Рекомендуется внедрить более эффективный метод. |
|
DA0007. Избегайте использования исключений для потока управления |
В данных профилирование слишком большая частота вызова обработчиков исключений .NET Framework. Рекомендуется использовать другую логику потока управления для сокращения числа выдаваемых исключений. |
Вызовы метода типа GetHashCode составляют значительную долю данных профилирования либо метод GetHashCode выделяет память. Следует упростить этот метод. |
|
Метод CompareTo этого типа является затратным или выделяет память. Следует упростить метод CompareTo. |
|
Вызовы методов System.Reflection, таких как InvokeMember и GetMember, или методов типа, таких как InvokeMember, составляют значительную долю данных профилирования. Рекомендуется по возможности заменить эти методы ранней привязкой к методам зависимых сборок. |
|
DA0013: интенсивное использование String.Split или String.Substring |
Вызовы методов String.Split или Substring составляют значительную часть данных профилирования. Если выполняется проверка на наличие в строке подстроки, рекомендуется воспользоваться IndexOf или IndexOfAny. |
DA0018. 32-битное приложение выполняется с ограничениями управляемой памяти процесса |
Системные данные, собранные во время сеанса профилирования, свидетельствуют о том, что кучи памяти .NET Framework близки к максимальному для управляемых куч размеру в 32-разрядном процессе. Рассмотрим профилирование еще раз, воспользовавшись методом профилирования памяти .NET и оптимизировав использование приложением управляемых ресурсов. |
В процессе сборки мусора 1-го поколения было удалено относительно большое число объектов памяти .NET. Если слишком много объектов с небольшим временем существования остаются после сборки поколения 0, затраты на управление памятью могут оказаться слишком высокими. |
|
В процессе сборки мусора 2-го поколения было удалено большое число объектов памяти .NET. Если слишком много объектов с небольшим временем существования остаются после сборки поколения 1, затраты на управление памятью могут оказаться слишком высокими. Это правило применяется, когда частота конфликтов блокировки превышает верхнее пороговое значение правила DA0005. |
|
Данные о производительности системы, собранные во время профилирования, свидетельствуют о том, что количество времени, затраченное на сборку мусора, достаточно велико по сравнению с общим временем обработки данных приложения. |
|
Данные о производительности системы, собранные во время профилирования, свидетельствуют о том, что количество времени, затраченное на сборку мусора, слишком велико по сравнению с общим временем обработки данных приложения. Это правило применяется, когда время, затраченное на сбор мусора, превышает верхнее пороговое значение правила DA0023. |
|
Данные о производительности системы, собранные вместе с данными профилирования, свидетельствуют о достаточно большом числе конфликтов блокировки, возникающих во время выполнения приложения. Рекомендуется повторить профилирование с использованием метода профилирования параллелизма для поиска причины конфликтов. |
|
Данные о производительности системы, собранные вместе с данными профилирования, свидетельствуют о слишком большом числе конфликтов блокировки, возникающих во время выполнения приложения. Рекомендуется повторить профилирование с использованием метода профилирования параллелизма для поиска причины конфликтов. Это правило применяется, когда частота конфликтов блокировки превышает верхнее пороговое значение правила DA0038. |