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

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

Упаковка–преобразование и распаковка–преобразование

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

Строки

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

Методы завершения

Пустые методы завершения использовать нельзя. Если класс содержит метод завершения, запись создается в очереди завершения. При вызове метода завершения вызывается сборщик мусора, выполняющий обработку очереди. Если метод завершения пуст, это просто приводит к потере производительности. Дополнительные сведения см. в разделе "Методы завершения" и "Время существования объектов": создание и уничтожение объектов.

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

См. также