Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Термин производительность обычно относится к скорости выполнения программы. Иногда можно увеличить скорость выполнения, следуя определенным основным правилам в исходном коде. В некоторых программах важно внимательно изучить код и использовать профилировщики, чтобы убедиться, что он работает как можно быстрее. В других программах не требуется выполнять такую оптимизацию, так как код выполняется приемлемо быстро по мере записи. В этой статье перечислены некоторые распространенные области, в которых производительность может страдать и советы по улучшению ее, а также ссылки на дополнительные разделы о производительности. Дополнительные сведения о планировании и измерении производительности см. в разделе "Производительность"
Упаковка и распаковка
Рекомендуется избегать использования типов значений в ситуациях, когда их необходимо много раз упаковать, например в классах неуниверсальных коллекций, таких как System.Collections.ArrayList. Вы можете избежать упаковки типов значений, используя универсальные (обобщенные) коллекции, такие как System.Collections.Generic.List<T>. Упаковка и распаковка являются процессами, требующими высоких вычислительных ресурсов. Если задан тип значения, необходимо создать совершенно новый объект. Это может занять в 20 раз больше времени, чем простое присвоение ссылки. При распаковке процесс литья может занять в четыре раза дольше, чем задание. Дополнительные сведения см. в разделе Упаковка и Распаковка.
Строки
При сцепении большого количества строковых переменных, например в жестком цикле, используйте System.Text.StringBuilder вместо оператора C# + или операторов объединения Visual Basic. Дополнительные сведения см. в статьях «Как объединить несколько строк» и «Операторы сцепления в Visual Basic».
Финализаторы
Пустые методы завершения использовать нельзя. Если класс содержит метод завершения, запись создается в очереди завершения. Когда вызывается финализатор, сборщик мусора инициируется для обработки очереди. Если финализатор пуст, это просто приводит к потере производительности. Дополнительные сведения см. в разделе «Методы завершения» и «Время жизни объектов: создание и удаление объектов».
Другие ресурсы
Написание более быстрого управляемого кода: узнайте, что стоит
Общие сведения о сборке мусора и советы по повышению производительности
Советы по производительности и рекомендации в приложениях .NET