我正在尝试优化编译器性能。我有一小段代码,只有几个浮点数的乘加运算。该代码在循环中执行数百万次。我尝试使用C++、C#、Java、Perl、Python等语言编译代码,然后对结果进行测量执行时间。
我对C#的性能非常不满意。我的C#代码比等效的C++或Java慢了约60%。我确定实验中一定存在错误。我想反汇编生成的二进制文件以了解原因。
在MSIL代码中是否有此选项?是否可以检查C# JIT编译器的结果并查看机器指令级别的内容(x86指令而不是MSIL指令)?
更新:代码(u、v、g*为双精度浮点数;steps为整数)。
我对C#的性能非常不满意。我的C#代码比等效的C++或Java慢了约60%。我确定实验中一定存在错误。我想反汇编生成的二进制文件以了解原因。
在MSIL代码中是否有此选项?是否可以检查C# JIT编译器的结果并查看机器指令级别的内容(x86指令而不是MSIL指令)?
更新:代码(u、v、g*为双精度浮点数;steps为整数)。
stopwatch.Start();
for (int i = 0; i < steps; i++)
{
double uu = g11 * u + g12 * v;
v = g21 * u + g22 * v;
u = uu;
}
stopwatch.Stop();