在哪里可以获得有关RyuJIT编译器更改的信息?

时间:2017-06-20 21:34:47

标签: c# .net jit ryujit

我使用BenchmarkDotNet编写了一些用C#编写的数学函数和相关的性能基准。

今天我安装了Visual Studio 15.2并根据BenchmarkDotNet(a)的输出,现在一些数学运算比以前快得多(例如exp和tanh特别快了几倍)(b)RyuJIT版本已经改变从v4.6.1648.0到v4.7.2098.0。

我想了解导致这些性能提升的变化。

1 个答案:

答案 0 :(得分:1)

通过遵循CoreCLR repo中的工作,您可以跟踪RyuJit中的改进。

在过去几年中,CoreCLR中对RyuJit的改进也已传播回完整的.Net Framework,并适用于在64位运行时中运行的应用程序。核心版本(有时是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〜???

用于32位运行时的.Net Framework代码生成是由一个较旧的jit(又名JIT32)完成的,这在最近几年没有太大变化。

如您所述,.Net Framework随Windows预先安装,因此,如果更新操作系统,则还可能会更新.Net Framework版本。对于较旧的操作系统,更新也通过Windows更新提供,因此随着时间的流逝,更多的安装将运行最新版本(截至今天为4.7.2)。