Aller au contenu principal

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 t1 et t2 sont de type rĂ©el ; le rĂ©sultat de CPU_TIME est mesurĂ© en secondes.
  • Si l'argument retournĂ© est nĂ©gatif, c'est que la fonctionnalitĂ© n'est pas disponible.