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

Чтение из Объявление .NET Framework 4.6, похоже, что RyuJIT предназначен только для .NET 4.6.

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

Ответы

Ответ 1

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

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

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

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

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

<runtime>
  <useLegacyJit enabled="1"/>
</runtime>