дизассемблировать код C # в машинные инструкции

Я экспериментирую с производительностью компилятора. У меня очень маленький фрагмент кода, всего несколько операций умножения и сложения с плавающей запятой. Код выполняется в цикле несколько миллионов раз. Я пытаюсь скомпилировать код на C ++, c #, java, perl, python ... и затем проверяю результат, измеряя время выполнения.

Я совершенно недоволен производительностью C #. Мой код на C # примерно на 60% медленнее, чем эквивалентный C ++ или java. Я уверен, что в моем эксперименте должна быть ошибка. Я хотел бы разобрать получившийся двоичный файл, чтобы узнать почему.

Есть ли такая возможность с кодом MSIL? Можно ли проверить результат JIT-компилятора C # на уровне машинных инструкций (инструкции x86, а не инструкции MSIL)?

Обновите

код (u, v, g * двойные; шаги - целые числа)

stopwatch.Start();
for (int i = 0; i < steps; i++)
{
    double uu = g11 * u + g12 * v;
    v = g21 * u + g22 * v;
    u = uu;
}
stopwatch.Stop();
5
задан danatel 14 May 2011 в 11:46
поделиться