Поделиться через


Советы по производительности .NET

Термин производительность обычно относится к скорости выполнения программы. Иногда можно увеличить скорость выполнения, следуя определенным основным правилам в исходном коде. В некоторых программах важно внимательно изучить код и использовать профилировщики, чтобы убедиться, что он работает как можно быстрее. В других программах не требуется выполнять такую оптимизацию, так как код выполняется приемлемо быстро по мере записи. В этой статье перечислены некоторые распространенные области, в которых производительность может страдать и советы по улучшению ее, а также ссылки на дополнительные разделы о производительности. Дополнительные сведения о планировании и измерении производительности см. в разделе "Производительность"

Упаковка и распаковка

Рекомендуется избегать использования типов значений в ситуациях, когда их необходимо много раз упаковать, например в классах неуниверсальных коллекций, таких как System.Collections.ArrayList. Вы можете избежать упаковки типов значений, используя универсальные (обобщенные) коллекции, такие как System.Collections.Generic.List<T>. Упаковка и распаковка являются процессами, требующими высоких вычислительных ресурсов. Если задан тип значения, необходимо создать совершенно новый объект. Это может занять в 20 раз больше времени, чем простое присвоение ссылки. При распаковке процесс литья может занять в четыре раза дольше, чем задание. Дополнительные сведения см. в разделе Упаковка и Распаковка.

Строки

При сцепении большого количества строковых переменных, например в жестком цикле, используйте System.Text.StringBuilder вместо оператора C# + или операторов объединения Visual Basic. Дополнительные сведения см. в статьях «Как объединить несколько строк» и «Операторы сцепления в Visual Basic».

Финализаторы

Пустые методы завершения использовать нельзя. Если класс содержит метод завершения, запись создается в очереди завершения. Когда вызывается финализатор, сборщик мусора инициируется для обработки очереди. Если финализатор пуст, это просто приводит к потере производительности. Дополнительные сведения см. в разделе «Методы завершения» и «Время жизни объектов: создание и удаление объектов».

Другие ресурсы

См. также