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 :
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. Exemple de mise en Ćuvre :
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
...
remarque
- Les variables
t1ett2sont de type réel ; le résultat deCPU_TIMEest mesuré en secondes. - Si l'argument retourné est négatif, c'est que la fonctionnalité n'est pas disponible.