Existe uma maneira de obter o compilador .Net JIT ou C # para otimizar os loops vazios vazio

Um seguimento para .NET JIT otimiza os loops vazios?:

O programa a seguir executa um loop vazio um bilhão de vezes e imprime o tempo para execução. São necessários 700 ms na minha máquina e estou curioso para saber se há uma maneira de fazer com que o jitter otimize o loop vazi

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);
        }
    }
}

Tanto quanto posso dizer, a resposta é não, mas não sei se existem opções ocultas do compilador que talvez eu não tenha tentado. Eu fiz questão de compilar no modo release e executar sem o depurador conectado, mas ainda estão sendo necessários 700 ms para executar esse loop vazio. Eu também tentei o NGEN com o mesmo resultado (embora meu entendimento seja que ele deva produzir o mesmo código compilado que o JIT de qualquer maneira, certo?). No entanto, eu nunca usei o NGEN antes e pode estar usando errado.

Isto parece assim seria algo fácil para o JIT encontrar e otimizar, mas sabendo muito pouco sobre como o nervosismo funciona em geral, estou curioso para saber se há um motivo específico para que essa otimização tenha sido deixada de fora. Além disso, o compilador VC ++ definitivamente parece fazer essa otimização, então eu me pergunto por que a discrepância. Alguma ideia

questionAnswers(1)

yourAnswerToTheQuestion