Включение RyuJIT в Visual Studio 2015 RC

После установки Visual Studio 2015 RC1 я загрузил устаревший проект ASP.NET и изменил версию .NET на 4.6. Проект работает отлично, но сайт по-прежнему загружается так медленно, как всегда. Я ожидал, что RyuJIT ударит, но, по-видимому, это не так.

Я просмотрел этот поток о RyuJIT, и я не вижу никаких следов RyuJIT с любым из описанных здесь методов.

Аналогичная проблема возникает и при пустом проекте консоли. Я не вижу Ryujit в окне вывода, окне Modules или в качестве выполняющейся задачи Windows.

Таким образом, либо RyuJIT не может быть обнаружен, как раньше, либо раньше, либо он не работает. В любом случае, я застрял.

Как я могу проверить, что RyuJIT запущен в VS 2015 и что мне нужно сделать, чтобы запустить его в случае, если это не так?

Ответы

Ответ 1

Сначала перейдите к настройкам проекта, вкладке "Отладка" и убедитесь, что включена отладка встроенного кода. Это позволяет вам видеть как встроенные, так и управляемые исполняемые файлы в окне "Модули" Visual Studio.

Теперь запустите программу в режиме отладки или выпуска и откройте окно "Модули". Вы увидите одну из двух вещей:

  • Загружается только clrjit.dll, что означает, что RyuJIT используется для компиляции всего управляемого кода.
  • Или загружаются как clrjit.dll, так и compatjit.dll, что означает, что укомплектованный компилятор JIT64 используется для компиляции вашего управляемого кода, тогда как управляемый код в других исполняемых файлах может использовать любой компилятор.

compatjit.dll загружается, когда включен механизм резервного копирования . В противном случае он не загружается.

Обратите внимание, что если вы установили .NET 4.6 (aka.NET 2015), тогда RyuJIT будет использоваться по умолчанию, даже если вы нацелились на более старые версии фреймворка.

Относительно RyuJIT против JIT64. Сгенерированный код JIT64 в настоящее время быстрее, чем код, созданный RyuJIT. Поэтому не ожидайте улучшения производительности в этом аспекте. С другой стороны, время компиляции меняется. Согласно Microsoft, время компиляции RyuJIT может быть быстрее, чем JIT64 на 30% и медленнее на 15%. Поэтому не ожидайте улучшения производительности в этом аспекте.

Тем не менее, ситуация может немного измениться, когда выпущена .NET 2015.

Примечание

Если целевой платформой является "Любой процессор", флажок "Предпочтительно 32-бит" на вкладке "Сборка" должен быть снят. В противном случае будет использоваться xIT JIT.

Ответ 2

Здесь вы идете

После установки есть два способа включить RyuJIT. Если вы просто хотите включить RyuJIT для одного приложения, установите переменную среды: COMPLUS_AltJit = *. Если вы хотите включить RyuJIT для всей машины, установите раздел реестра HKLM\SOFTWARE\Microsoft.NETFramework\AltJit в строку "*". Оба метода заставляют 64-разрядную среду CLR использовать RyuJIT вместо JIT64. И оба являются временными настройками - установка RyuJIT не делает никаких постоянных изменений на вашем компьютере (кроме установки файлов RyuJIT в каталоге, то есть.)

Взято из .NET Framework 4.6 - Тестирование с помощью RyuJIT

Но он должен быть активирован по умолчанию

В .NET Framework 4.6 включен новый компилятор Just-In-Time (JIT) для 64-битных процессов, называемый RyuJIT. Он включен по умолчанию. Это еще предварительная версия, поэтому вы можете обнаружить проблемы, которые еще не исправлены.

Взято из .NET Framework 4.6 - Тестирование с помощью RyuJIT

В целях тестирования, если вы удалите любое исключение с помощью RyuJIT, вы можете отключить его с помощью параметра app.config. Это использует старый JIT64.

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

Тем не менее, RyuJIT CTP5 в настоящее время не работает на Visual Studio "14" CTP4. Это вам все равно не нужно, поскольку RyuJIT включен по умолчанию в Visual Studio "14" CTP4.:) (Версия RyuJIT в Visual Studio "14" CTP4 немного старше, чем этот CTP, но не сильно.)

Взято из RyuJIT CTP5: приблизившись к доставке и с лучшей поддержкой SIMD

Я нашел Blogpost для определения используемого JIT во время выполнения, но он учитывает известную ошибку в компиляторе den JIT64. Код примера размещен здесь. Я не уверен, что это надежный способ определить его.

Ответ 3

RyuJIT активируется автоматически при компиляции кода, и это всего лишь компилятор, который запускается в режиме 64 бит с доступом к ОЗУ, чтобы увеличить вашу компиляцию на 30% быстрее, а время, затраченное на компилятор JIT, является лишь одним из компонентов времени запуска, поэтому приложение не запускается в два раза быстрее, потому что JIT в два раза быстрее.

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