Есть ли способ получить компилятор .NET jit или C # для оптимизации пустых петлей?

Последующий раздел делает .NET JIT оптимизировать пустые петли? :

Следующая программа просто работает пустой петлей A миллиард раз и отпечатывает время пробега. На моей машине требуется 700 мс, и мне интересно, если есть способ получить джиттером оптимизировать пустой петлей.

using System;

namespace ConsoleApplication1 {
    class Program {
        static void Main() {
            var start = DateTime.Now;
            for (var i = 0; i < 1000000000; i++) {}
            Console.WriteLine((DateTime.Now - start).TotalMilliseconds);
        }
    }
}

Насколько я могу сказать, ответ нет, но я не знаю, есть ли параметры скрытого компилятора, я мог бы не пробовать. Я позаботился о компиляции в режиме выпуска и запустить без подключенного отладчика, но для запуска этого пустой петли предпринимаются 700 мс. Я также попробовал NGEN с тем же результатом (хотя мое понимание заключается в том, что он должен производить тот же скомпилированный код, как джит в любом случае, верно?). Однако я никогда не использовал NGEN до и может быть неправильно использовать.

Это , похоже, , как кажется , как это было бы что-то легко для JIT, чтобы найти и оптимизировать, но знание очень мало о том, как Jitters работают в целом, мне интересно, если есть определенная причина, по которой эта оптимизация будет иметь был оставлен. Также Compiler VC ++ определенно делает эту оптимизацию, поэтому мне интересно, почему несоответствие. Любые идеи?

11
задан Community 23 May 2017 в 12:07
поделиться