Как измерить время выполнения всех методов в.NET Core?

Мне нужно отладить производительность медленного приложения, которое иногда замедляется, а иногда работает просто отлично.

Это действительно сложно, и я не могу найти, в чем проблема.

Я думал о ткачестве IL и таких инструментах, как PostSharp. Но так как я хочу только очень конкретного требования, я подумал, что, возможно, есть другие способы / методы, с которыми я не знаком.

Моя задача - записать общее время выполнения каждого метода. Как я могу получить это? IL ткачество является единственным вариантом?

2 ответа

Вы делаете это с помощью профилировщика, например dotTrace для C#. Если у вас есть Resharper Ultimate, dotTrace включен.

Профилировщики.NET измеряют не только время всех ваших методов, но и время сборки мусора.NET.

Также есть профилировщик, доступный в более новых версиях Visual Studio.

Хотя это можно было бы сделать и с помощью IL-ткачества, вы не скомпилируете дополнительную версию только для этой цели. С помощью профилировщика вы можете изменять настройки без перекомпиляции кода каждый раз.

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

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

Для второго варианта использования вы можете проверить PostSharp Diagnostics Framework ( http://doc.postsharp.net/logging). Он позволяет вам включить детальную регистрацию в вашем приложении, включая время выполнения метода, и легко настраивается. Ведение журнала можно включать и выключать в конфигурации, поэтому нет необходимости создавать две отдельные сборки приложения.

Другой вариант - инструмент мониторинга производительности приложений, установленный в производственной среде. Быстрый поиск даст вам примеры, такие как New Relic APM, DynaTrace, AppDynamics и другие.

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

Другие вопросы по тегам