Juin 092011
voici une fonction permettant de calculer le temps qu’utilise un élément d’un script perl.
Download : calcultime.pl
#!/usr/bin/perl use strict ; use warnings ; use Time::HiRes qw( gettimeofday tv_interval) ; sub calcultime { my ($seconds, $microseconds) = gettimeofday; if( !ref($_[0]) ) { my $ref = [ ($seconds, $microseconds) ] ; return ($ref) ; } else { my ($oldtime, $name) = @_ ; my ($oldseconds, $oldmicroseconds) = @$oldtime ; my $elapsed = tv_interval( [$oldseconds, $oldmicroseconds, [$seconds, $microseconds]] ); return($elapsed); } }
utilisation:
- vous déclarez les variables dans lesquelles seront enregistrés les temps d’éxécution
- vous utilisez deux fois la fonction avec cette variable, une fois pour initialiser, une seconde fois pour récupérer le retour :
- vous affichez le resultat avec printf:
my ($compteur_1, $compteur_2, $compteur_3) ; $compteur_1 = calcultime($compteur_1) ; for(my $i=0 ; $i<10 ; $i++) { next ; } $compteur_1 = calcultime($compteur_1) ; $compteur_2 = calcultime($compteur_2) ; for(my $i=0 ; $i<1000 ; $i++) { next ; } $compteur_2 = calcultime($compteur_2) ; $compteur_3 = calcultime($compteur_3) ; for(my $i=0 ; $i<100000 ; $i++) { next ; } $compteur_3 = calcultime($compteur_3) ; printf("Temps passe sur la 1ere boucle : %fs\n",$compteur_1) ; printf("Temps passe sur la 2eme boucle : %fs\n",$compteur_2) ; printf("Temps passe sur la 3eme boucle : %fs\n",$compteur_3) ;
ça donne:
$ ./time.pl Temps passe sur la 1ere boucle : 0.000044s Temps passe sur la 2eme boucle : 0.000364s Temps passe sur la 3eme boucle : 0.034923s