my $start_time = [Time::HiRes::gettimeofday()];
my $diff = Time::HiRes::tv_interval($start_time);
print "\n\n$diff\n";
Réponses
Trop de publicités?Peut-être. Dépend de ce que tu veux dire par "mieux".
Si vous demandez une "meilleure" solution en termes de fonctionnalité, puis c'est à peu près tout.
Si vous demandez un "mieux" dans le sens de "moins difficile" de la notation, alors savoir que, dans un contexte scalaire, Time::HiRes::gettimeofday()
sera de retour flottant de secondes depuis l'epoch (avec la partie fractionnaire représentant microsecondes), tout comme Time::HiRes::time()
(ce qui est une bonne chute en remplacement de la norme time()
de la fonction.)
my $start = Time::HiRes::gettimeofday();
...
my $end = Time::HiRes::gettimeofday();
printf("%.2f\n", $end - $start);
ou:
use Time::HiRes qw( time )
my $start = time();
...
my $end = time();
printf("%.2f\n", $end - $start);
Dépend de ce que vous faites. Si vous voulez mesurer la paroi de l'horloge (la quantité réelle de temps qui s'est écoulé), vous ne pouvez pas obtenir beaucoup mieux. Si vous voulez mesurer combien de temps l'ordinateur a été de faire quelque chose, alors vous voudrez peut-être regarder à l' times
de la fonction ou de l' time
commande. L' times
fonction en Perl renvoie une liste de l'actuel cumul du temps de ce processus dans votre code et le code de tous les modules que vous utilisez ce processus en appels système, l'ensemble de ce processus, les enfants du code de l'utilisateur, et l'ensemble de ce processus, les enfants de dans les appels système.
#!/usr/bin/perl
use strict;
use warnings;
use Time::HiRes;
my $start_time = [Time::HiRes::gettimeofday()];
.
.
.
my ($user, $system, $child_user, $child_system) = times;
print "wall clock time was ", Time::HiRes::tv_interval($start_time), "\n",
"user time for $$ was $user\n",
"system time for $$ was $system\n",
"user time for all children was $child_user\n",
"system time for all children was $child_system\n";
L' time
commande UNIX est similaire à la fonction. Vous exécutez une commande comme ceci
time ./script.pl
et elle renvoie à quelque chose comme ceci
real 0m0.692s
user 0m0.019s
sys 0m0.109s
où est le réel, c'est le mur le temps de l'horloge et de l'utilisateur et sys sont les mêmes que l'utilisateur et le système ci-dessus.
L' time
commande est plus facile pour un homme d'utiliser, mais l' times
fonction vous donne plus d'informations et est plus facile à intégrer dans un programme d'ordinateur (en plus il a l'avantage de produire des résultats tout un programme est toujours en cours d'exécution).
Oh, j'ai oublié de mentionner $^T
. Cette variable contient l'heure de début du programme en secondes depuis l'epoch, donc si vous ne se soucient que d'une granularité de secondes, vous pouvez juste dire
END { print "The program ran for ", time() - $^T, " seconds\n" }
près du haut de votre programme.