Me doy cuenta de que esta pregunta es imposible de responder en forma absoluta, pero solo estoy después de las cifras del estadio:¿Cuántas instrucciones asm por instrucción C?
Dado un programa C de tamaño razonable (miles de líneas de código), en promedio, cuántas instrucciones ASM tendrían ser generado. En otras palabras, ¿qué es una relación de instrucción C-ASM realista? Siéntase libre de hacer suposiciones, como 'con las arquitecturas x86 actuales'.
Intenté Google acerca de esto, pero no pude encontrar nada.
Adición: al darse cuenta de cuánta confusión produjo esta pregunta, siento la necesidad de una explicación: lo que quería saber por esta respuesta, es saber, en términos prácticos, qué significa "3GHz". Soy plenamente consciente de que el rendimiento por Herz varía enormemente según la arquitectura, el hardware, las memorias caché, la velocidad del bus y la posición de la luna.
No estoy buscando una respuesta precisa y científica, sino más bien una respuesta empírica que podría ponerse en escalas insondables.
Esta no es una respuesta trivial al lugar (como me di cuenta), y este fue mi mejor esfuerzo al respecto. Sé que la cantidad de líneas resultantes de ASM por línea de C varía según lo que esté haciendo. i++
no se encuentra en el mismo barrio que sqrt(23.1)
- Lo sé. Además, no importa qué ASM obtenga de la C, la ASM se interpreta en varios conjuntos de microcódigos dentro del procesador, lo cual, de nuevo, depende de si está ejecutando AMD, Intel u otra cosa, y sus respectivas generaciones. Soy consciente de esto también.
Las respuestas del estadio que he obtenido hasta ahora son lo que he estado buscando: Un proyecto suficientemente grande promedia aproximadamente 2 líneas de ASM x86 por 1 línea de ANSI-C. Los procesadores de hoy en día promediarían alrededor de un comando de ASM por ciclo de reloj, una vez que se llenen las tuberías y se les dé una muestra lo suficientemente grande.
¿Qué decisión tomaría usted que depende de la respuesta a esta pregunta? – EvilTeach