Где я могу получить информацию об изменениях в компиляторе RyuJIT?

У меня есть некоторые математические функции, написанные на C#, и связанные с ними тесты производительности с использованием BenchmarkDotNet.

Сегодня я установил Visual Studio 15.2 и в соответствии с выводом BenchmarkDotNet (а) некоторые математические операции теперь выполняются значительно быстрее, чем раньше (например, exp и tanh, в частности, работают в несколько раз быстрее) (b) Версия RyuJIT изменилась по сравнению с v4. С 6.1648.0 по v4.7.2098.0.

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

1 ответ

Вы можете отслеживать улучшения в RyuJit, следя за работой в репозитории CoreCLR.

За последние несколько лет улучшения в RyuJit, сделанные в CoreCLR, также были распространены на полную версию.Net Framework и применяются к приложениям, работающим в 64-разрядных средах исполнения. Существует грубое соответствие между версиями Core (или иногда коммитами CoreCLR) и версиями для настольных компьютеров:

  • .Net Core 1.0 ~.Net Framework 4.6.2
  • .Net Core 1.1 ~.Net Framework 4.7
  • .Net Core 2.0 ~.Net Framework 4.7.1
  • Мастер CoreCLR от 10/2017 ~.Net Framework 4.7.2
  • .Net Core 2.1 ~???

.Net Framework codegen для 32-разрядных сред выполнения выполняется старым jit (он же JIT32), который за последние годы не сильно изменился.

Как вы заметили,.Net Framework поставляется с предустановленной Windows, поэтому, если вы обновляете свою ОС, вы, вероятно, также обновляете версию.Net Framework. Обновления также поставляются через обновления Windows для более старых ОС, так что со временем все больше и больше установок будут работать с последней версией (4.7.2 на сегодняшний день).

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