【发布时间】:2017-11-23 14:36:39
【问题描述】:
我有一些用 C# 编写的数学函数和使用 BenchmarkDotNet 的相关性能基准。
今天我安装了 Visual Studio 15.2,根据 BenchmarkDotNet 的输出 (a) 一些数学运算现在比以前快得多(例如 exp 和 tanh 似乎快了好几倍) (b) RyuJIT 版本已更改从 v4.6.1648.0 到 v4.7.2098.0。
我想了解导致这些性能提升的哪些变化。
【问题讨论】:
-
这与抖动无关,Tanh 和 Exp 不是内在函数。这来自 CLR 使用的 C 运行时库,以前版本中的 msvcr120_clr0400.dll。微软从英特尔购买了该代码,他们不提供源代码,也不告诉他们做什么。您必须拆卸才能看到差异。
-
谢谢汉斯。看来我获得了 .NET 框架 4.7 作为 Windows 10“创建者”更新的一部分,现在 Roslyn 或 RyuJIT 正在消除他们以前没有的方法调用(即优化没有副作用的方法)。这些是返回值(双精度浮点)的方法,但我没有将结果分配给变量,所以不知道为什么以前没有消除这些。