Ah ... Abrir nuevamente. DE ACUERDO. Aquí está el trato.
ILDASM es un comienzo, pero no un final. La clave es: ¿qué generará el JIT para el código de ensamblaje?
Esto es lo que quieres hacer.
Tome un par de muestras de lo que está tratando de ver. Obviamente puedes cronometrarlos si quieres, pero supongo que quieres saber más que eso.
Esto es lo que no es obvio. El compilador de C# genera algunas secuencias de MSIL que no son óptimas en muchas situaciones. El JIT se ajustó para tratar con estos y peculiaridades de otros idiomas. El problema: solo se han ajustado los 'caprichos' que alguien ha notado.
Realmente desea hacer una muestra que tenga sus implementaciones para probar, regresa a main (o donde sea), Sleep() s, o algo donde pueda adjuntar un depurador, luego vuelva a ejecutar las rutinas.
NO QUIERES iniciar el código en el depurador o el JIT generará un código no optimizado, y parece que quieres saber cómo se comportará en un entorno real. El JIT hace esto para maximizar la información de depuración y minimizar la ubicación actual de la fuente de 'saltar alrededor'. Nunca inicie una evaluación de perf bajo el depurador.
OK. Entonces, una vez que el código se ha ejecutado una vez (es decir: el JIT ha generado un código para él), luego conecte el depurador durante la suspensión (o lo que sea). Luego observe el x86/x64 que se generó para las dos rutinas.
Mi instinto me dice que si está utilizando ++ i/i ++ como describió, es decir, en una expresión independiente donde el resultado de valor r no se vuelve a utilizar, no habrá ninguna diferencia. ¡Pero no será divertido ir a buscar y ver todas las cosas buenas! :)
Esto no debería haber sido cerrado. Pero de todos modos, si compila y usa ildasm.exe para mirar el MSIL, verá que los dos ejemplos dan como resultado MSIL idéntico. –
Votaron para reabrir. A John Sheehan, tvanfosson, ctacke, Marc Gravell ... si está votando para cerrar ... ¡edite y proporcione el duplicado en la pregunta! No veo ningún enlace a un engañado – mmcdole
Hubo una respuesta con el duplicado, no sé a dónde fue. –