Table des matières
Jean Zay : outils de mesure de temps
commande Unix de mesure de temps
La commande Unix time
permet d’afficher, après la sortie d'un exécutable, son temps d’exécution.
Voici un exemple :
$ time ./mon_executable real 0m1.43s user 0m0.08s sys 0m0.16s
Le temps d'horloge ou temps Elapsed correspond ici a la ligne real
;
le temps système correspond à la ligne sys
; il donne une indication de la charge liée aux entrées/sorties (lecture/écritures sur disque dur).
Temps d'horloge en Fortran : ''SYSTEM_CLOCK''
Sous-programme intrinsèque Fortran 90, qui donne un temps Elapsed en retournant le nombre de périodes d'horloge consommées.
Voici un exemple d'utilisation :
- exemple.f90
. . . INTEGER(kind=8) :: & nb_periodes_initial, & ! valeur initiale du compteur de périodes d'horloge nb_periodes_final, & ! valeur finale du compteur de périodes d'horloge nb_periodes_max, & ! valeur maximale du compteur d'horloge nb_periodes_sec, & ! nombre de périodes d'horloge par seconde nb_periodes ! nombre de périodes d'horloge du code REAL(kind=8) :: temps_elapsed ! temps réel en secondes ! Initialisations CALL SYSTEM_CLOCK(COUNT_RATE=nb_periodes_sec, COUNT_MAX=nb_periodes_max) . . . CALL SYSTEM_CLOCK(COUNT=nb_periodes_initial) . . . ! <<<<<<<<<<<<< partie du code à évaluer >>>>>>>>>>>>> . . . CALL SYSTEM_CLOCK(COUNT=nb_periodes_final) nb_periodes = nb_periodes_final - nb_periodes_initial IF (nb_periodes_final < nb_periodes_initial) & nb_periodes = nb_periodes + nb_periodes_max temps_elapsed = REAL(nb_periodes) / nb_periodes_sec . . .
Temps CPU en Fortran : ''CPU_TIME''
Sous-programme intrinsèque Fortran 90, qui mesure le temps CPU d'une portion de code encadrée par deux appels à CPU_TIME
.
Mise en œuvre :
- exemple.f90
implicit none integer :: j, n real,dimension(10000) :: x real :: t1,t2 . . . . call CPU_TIME( t1 ) !do j=1,10000 ! x(j)=log(23.)*j !end do x(:) = log(23.)*[ (j,j=1,10000) ] call CPU_TIME( t2 ) . . . . read *, n ; print *, x(n) print *,t2 - t1 . . . .
Notes
- les variables
t1
ett2
sont de type réel; le résultat deCPU_TIME
est mesuré en secondes. - Si l'argument retourné est négatif, c'est que la fonctionnalité n'est pas disponible.