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