<< Chapter < Page | Chapter >> Page > |
¿Su compilador reconoce el código muerto en el siguiente programa? ¿Cómo puede estar seguro? ¿Le envía el compilador algún aviso?
main()
{int k=1;
if (k == 0)printf ("Esta sentencia nunca se ejecuta.\n");
}
Compile el siguiente código, y ejecútelo bajo distintos niveles de optimización.
Trate de adivinar los distintos tipos de optimizaciones que se están realizando para mejorar el rendimiento, conforme se incrementa el nivel de optimización.
REAL*8 A(1000000)
DO I=1,1000000A(I) = 3.1415927
ENDDODO I=1,1000000
A(I) = A(I) * SIN(A(I)) + COS(A(I)) ENDDOPRINT *,"Terminado"
Tome el siguiente segmento de código y compílelo a varios niveles de optimización. Observe el código ensamblador generado (en algunos compiladores esto se hace con la opción -S) y encuentre los efectos de cada nivel de optimización sobre el lenguaje máquina. Mida el tiempo de ejecución del programa para ver el rendimiento a diferentes niveles de optimización. Si tiene acceso a múltiples arquitecturas, observe el código generado usando los mismos niveles de optimización sobre diferentes arquitecturas.
REAL*8 A(1000000)
COMMON/BLK/A.... Llamada para medir el tiempo
DO I=1,1000000A(I) = A(I) + 1.234
ENDDO.... Llamada para medir el tiempo
END
¿Por qué es necesario poner el arreglo adentro de un bloque común?
Notification Switch
Would you like to follow the 'Cómputo de alto rendimiento' conversation and receive update notifications?