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