Calentamiento al llamar a los métodos en C #

Acabo de encontrar esta publicación que habla sobre la medición del tiempo. Recuerdo (espero no estar recordando mal) que es una competencia desleal, si este método nunca se llama antes. Es decir:

// At the beginning of the application MyClass instance = new MyClass(); instance.MyMethod(); instance.MyMethod(); // Faster than the first call, because now it's warmed up. 

¿Realmente tenemos esa teoría de calentamiento en C #? En caso afirmativo, ¿por qué (qué hará el CLR al calentarse)? ¿Y todo es igual si este método es de extensión (estático)?

Si con “calentamiento” se refiere a JIT, entonces sí; si nunca se llama a un método, no se habrá comstackdo todavía, por lo que la primera vez que lo ejecute podría ser más lento. También consulte ¿El .NET CLR JIT comstack todos los métodos, todas las veces?

Esto se debe a la comstackción Just-In-Time (JIT). Si desea mejorar el rendimiento y evitar este efecto, Native Image Generator (Ngen.exe) puede ayudarlo.

Lo que la gente está hablando aquí es comstackción justo a tiempo . El código que creas en .NET se almacena en un lenguaje intermedio, que es independiente de la plataforma. Cuando ejecuta la aplicación, las partes del código CIL se comstackn según las instrucciones específicas de la plataforma, lo que requiere un poco de tiempo la primera vez. Luego se almacena en la memoria caché para que la próxima vez que llame al método no tenga esta pérdida de tiempo.

Si realmente quieres, puedes precomstackr a versiones específicas de la plataforma.

Necesita ser comstackdo, y es por eso que la primera llamada es más larga.

Desde la comstackción de MSIL hasta el código nativo :

En la llamada inicial al método, el código pasa el control al comstackdor JIT, que convierte el MSIL para ese método en código nativo y modifica el código auxiliar para dirigir la ejecución a la ubicación del código nativo. Las llamadas subsiguientes del método comstackdo JIT proceden directamente al código nativo que se generó previamente, lo que reduce el tiempo que le toma a JIT-comstackr y ejecutar el código.