我使用BenchmarkDotNet编写了一些用C#编写的数学函数和相关的性能基准。
今天我安装了Visual Studio 15.2并根据BenchmarkDotNet(a)的输出,现在一些数学运算比以前快得多(例如exp和tanh特别快了几倍)(b)RyuJIT版本已经改变从v4.6.1648.0到v4.7.2098.0。
我想了解导致这些性能提升的变化。
答案 0 :(得分:1)
通过遵循CoreCLR repo中的工作,您可以跟踪RyuJit中的改进。
在过去几年中,CoreCLR中对RyuJit的改进也已传播回完整的.Net Framework,并适用于在64位运行时中运行的应用程序。核心版本(有时是CoreCLR提交)与桌面版本之间存在粗略的对应关系:
用于32位运行时的.Net Framework代码生成是由一个较旧的jit(又名JIT32)完成的,这在最近几年没有太大变化。
如您所述,.Net Framework随Windows预先安装,因此,如果更新操作系统,则还可能会更新.Net Framework版本。对于较旧的操作系统,更新也通过Windows更新提供,因此随着时间的流逝,更多的安装将运行最新版本(截至今天为4.7.2)。