Нужно ли ориентировать свое приложение на.NET 4.6, чтобы воспользоваться преимуществами RyuJIT?

Читая из анонса.NET Framework 4.6, кажется, подразумевается, что RyuJIT предназначен только для.NET 4.6.

Означает ли это, что мне нужно будет перенаправить свои приложения на.NET 4.6, чтобы RyuJIT вступил в силу?

1 ответ

Решение

Краткий ответ: нет.

Длинный ответ: используйте отладчик, чтобы убедиться, что у вас есть новая версия. Сначала посмотрите на каталог времени выполнения с помощью Explorer, перейдите в C:\Windows\Microsoft.NET\Framework64\v4.0.30319. Вы найдете две дрожи там, clrjit.dll новый джиттер на основе проекта Ryujit и compatjit.dll это устаревший джиттер x64.

Проект> Свойства> Отладка> отметьте "Включить вариант отладки собственного кода". Используйте вкладку "Сборка" и убедитесь, что вы убрали форсирование джиттера, опция "Предпочитать 32-битный" должна быть снята, "Цель платформы" должна быть установлена ​​на AnyCPU. И используйте вкладку Application, чтобы выбрать цель фреймворка.

Используйте Debug > Step Into, чтобы начать отладку. Отладка> Windows > Модули отображает список загруженных модулей. Найдите библиотеки джиттера в этом списке, щелкните заголовок столбца "Имя", чтобы отсортировать по имени. Если ты видишь compatjit.dll тогда вы используете устаревший джиттер. Обратите внимание, что вы всегда будете видеть clrjit.dll, они оба загружаются при использовании устаревшего джиттера.

Для использования устаревшего джиттера x64 преднамеренно требуется либо переменная среды COMPLUS_useLegacyJit, либо значение useLegacyJit в ключе реестра HKLM или HKCU\Software\Microsoft\ .NETFramework или запись в файле app.exe.config:

<runtime>
  <useLegacyJit enabled="1"/>
</runtime>
Другие вопросы по тегам