<< Chapter < Page | Chapter >> Page > |
¿Cómo simplificaría usted el siguiente ciclo condicional?
DO I=1,N
A(I) = A(I) * BIF (I .EQ. N/2) A(I) = 0.
ENDDO
Cronometre el siguiente ciclo en su computadora, con y sin la condición. Ejecútelo con tres conjuntos de datos: uno con todos los valores
A(I)
menores que
SMALL
, uno con todos los valores
A(I)
mayores que
SMALL
, y un tercero dividido en partes iguales. ¿Cuándo es mejor dejar la prueba en el ciclo, si es el caso?
PARAMETER (SMALL = 1.E-20)
DO I=1,NIF (ABS(A(I)) .GE. SMALL) THEN
B(I) = B(I) + A(I) * CENDIF
ENDDO
Escriba un programa sencillo que invoque a una subrutina sencilla en su ciclo interno. Cronometre la ejecución del programa. Luego dígale al compilador que compile la rutina en línea, y cronometre nuevamente. Finalmente, modifique el código para realizar las operaciones en el cuerpo del ciclo, y cronometre el código. ¿Cuál opción se ejecutó más rápido? Puede que deba revisar el código máquina generado para imaginar el porqué.
Notification Switch
Would you like to follow the 'Cómputo de alto rendimiento' conversation and receive update notifications?