Производительность .NET Framework

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

Разработка и планирование для обеспечения производительности

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

Вам не нужно разбираться в тонкостях работы целевой платформы, чтобы создать высокопроизводительное приложение. Однако вам следует разобраться, какие части целевой платформы наиболее критичны с точки зрения производительности. Это можно сделать, измерив производительность на раннем этапе процесса разработки.

Чтобы определить критичные для производительности области и установить целевые показатели производительности, всегда учитывайте взаимодействие с пользователем. Время запуска и скорость реагирования являются двумя ключевыми областями, которые повлияют на восприятие приложения пользователем. Если ваше приложение использует много памяти, оно может показаться пользователю медленным, может негативно влиять на выполнение других приложений в системе, а в некоторых случаях может не пройти процесс отправки в Магазин Windows или Магазин Windows Phone. Кроме того, если вы определите, какие части кода выполняются чаще всего, то сможете хорошо оптимизировать их.

Анализ производительности

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

Средства производительности

Ниже указано несколько средств оценки производительности, которые вы можете использовать со своими приложениями .NET Framework.

Средство Описание
Анализ производительности Visual Studio Используйте для анализа использования ЦП у приложений .NET Framework, которые будут развернуты на компьютерах под управлением операционной системы Windows.

Это средство доступно в меню Отладка Visual Studio после открытия проекта. Для получения дополнительной информации см. статью об обозревателе производительности. Примечание: Используйте Windows Phone Анализ приложений (см. следующую строку) при выборе Windows Phone.
Анализ приложения Windows Phone Используйте для анализа использования ЦП и памяти, скорости передачи данных по сети, скорости реагирования приложения и расхода заряда батареи у своих приложений Windows Phone.

Это средство доступно в меню Отладка проекта Windows Phone в Visual Studio после установки пакета SDK для Windows Phone. Дополнительные сведения см. в разделе "Профилирование приложений" для Windows Phone 8.
PerfView Используйте для определения аспектов производительности, связанных с ЦП и памятью. Это средство использует трассировку событий для Windows (ETW) и API профилирования CLR для предоставления расширенных исследований памяти и ЦП, а также сведений о сборке мусора и JIT-компиляции. Дополнительные сведения об использовании PerfView см. в записях блога.

Вопросы, относящиеся к памяти, см. в разделе Использование PerfView для анализа памяти.
Windows Performance Analyzer Применяйте для определения общей производительности системы, например, использования памяти и хранилища приложением, когда на одном компьютере выполняется несколько приложений. Это средство доступно в центре загрузки в составе комплекта средств для оценки и развертывания Windows (ADK) для Windows 8. Дополнительные сведения см. в разделе Windows Performance Analyzer.

Трассировка событий Windows (ETW)

Трассировка событий Windows — это методика, которая позволяет вам получить диагностические сведения о выполнении кода и является важным компонентом многих упомянутых ранее средств оценки производительности. Трассировка событий Windows создает журналы при порождении определенных событий приложениями .NET Framework и операционной системой Windows. С помощью трассировки событий Windows вы можете включать и отключать ведение журналов динамически, чтобы можно было осуществлять подробную трассировку в рабочей среде без перезапуска приложения. Платформа .NET Framework обеспечивает поддержку событий трассировки событий Windows, кроме того, трассировка событий Windows используется многими средствами профилирования и оценки производительности для формирования данных о производительности. Эти средства часто включают и отключают события трассировки событий Windows, поэтому будет полезно ознакомиться с ними. Вы можете использовать определенные события трассировки событий Windows для сбора информации о производительности отдельных компонентов своего приложения. Дополнительные сведения о поддержке трассировки событий Windows в .NET Framework см. в разделах События трассировки событий Windows в среде CLR и События трассировки событий Windows в библиотеке параллельных задач и PLINQ.

Производительность по типам приложений

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

Тип приложения См.
Приложения .NET Framework для всех платформ Сборка мусора и производительность

Советы по производительности .NET
приложения магазина Windows 8.x, написанные на C++, C# и Visual Basic Рекомендации по повышению производительности приложений Магазина Windows на C++, C# и Visual Basic
Windows Presentation Foundation (WPF) WPF Performance Suite
ASP.NET Общие сведения о производительности ASP.NET
Заголовок Описание
Кэширование в приложениях платформы .NET Framework Содержит описание методик кэширования данных, применяемых для повышения производительности приложения.
Отложенная инициализация Содержит описание способов инициализации объектов по мере необходимости для повышения производительности, особенно при запуске приложения.
Надежность Содержит сведения о предотвращении асинхронных исключений в серверной среде.
Разработка больших, быстро реагирующих приложений .NET Framework Содержит советы по повышению производительности, выработанные во время перевода компиляторов C# и Visual Basic на управляемый код, и несколько реальных примеров из компилятора C#.