using System;
namespace ConsoleApplication1
{
class TestMath
{
static void Main()
{
double res = 0.0;
for(int i =0;i<1000000;++i)
res += System.Math.Sqrt(2.0);
Console.WriteLine(res);
Console.ReadKey();
}
}
}
通过将此代码与 c++ 版本进行基准测试,我发现性能比 c++ 版本慢 10 倍。我对此没有任何问题,但这导致我提出以下问题:
似乎(经过几次搜索)JIT 编译器无法像 c++ 编译器那样优化此代码,即只需调用一次 sqrt 并在其上应用 *1000000。
有没有办法强制 JIT 这样做?