Измерение времени JIT приложения .NET - PullRequest
4 голосов
/ 24 апреля 2011

Я знаю, что вы можете использовать NGen для создания встроенных предварительно скомпилированных образов вашего приложения .NET.

Но как вы оцениваете, сколько времени ваше приложение провело в JIT? Какие инструменты профилирования будут измерять это? Есть ли бесплатные инструменты для этого? Я хотел бы знать, сколько времени нужно сэкономить, прежде чем делать это.

Ответы [ 2 ]

4 голосов
/ 24 апреля 2011

К сожалению, нет статистики "Абсолютное время в JIT", которую вы сможете получить.CLR предоставляет счетчик производительности «% времени в Jit», который он периодически обновляет, но он настолько точен, насколько он выбирает выборку.

Вы можете довольно легко получить доступ к этому счетчику производительности с помощью средства Windows Performance Monitor.или с помощью таких инструментов, как ANTS Profiler от RedGate, - именно так я впервые столкнулся с ним.Если вам нужен программный доступ к нему, вы можете использовать WMI или класс .NET PerformanceCounter.

3 голосов
/ 13 мая 2011

Эта статья об измерении воздействия JIT была очень полезной. По сути, вы бы использовали NGen для сценариев «горячего» запуска. Время холодного запуска обычно определяется загрузкой DLL в память. JIT-компиляция оказывает гораздо большее влияние на теплый запуск.

Как-то не понятно, как установить xperf: в основном вы хотите загрузить Windows 7 .NET 4 SDK и обязательно выбрать Performance Toolkit. Затем откройте командную строку VS 2010 с правами администратора, перейдите в каталог программы, которую вы хотите профилировать, и следуйте командам в статье.

Основная суть в том, что с помощью захвата xperf вы можете углубиться в свой процесс и посмотреть, сколько времени было потрачено в clrjit.dll. В моем случае 30% процессорного времени было потрачено на горячий запуск.

...