コンパイラのパフォーマンスを試しています。非常に小さなコードがあり、浮動小数点の乗算と加算がいくつかあります。コードは数百万回ループで実行されます。C++、c#、java、perl、python ... でコードをコンパイルしようとしています。次に、実行時間を測定しながら結果を実行します。
C# のパフォーマンスにはかなり不満があります。私の c# コードは、同等の C++ または Java よりも約 60% 遅くなります。確かに、私の実験にはバグがあるに違いありません。結果のバイナリを逆アセンブルして、その理由を知りたいと思います。
MSIL コードにそのようなオプションはありますか? c# JIT コンパイラの結果は、マシン命令レベル (MSIL 命令ではなく x86 命令) で調べることができますか?
アップデート
コード (u、v、g* は double、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();