Est-il une meilleure façon de déterminer le temps écoulé en Perl?
my $start_time = [Time::HiRes::gettimeofday()];
my $diff = Time::HiRes::tv_interval($start_time);
print "\n\n$diff\n";
- Mieux dans quel sens?
Vous devez vous connecter pour publier un commentaire.
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" 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 commeTime::HiRes::time()
(ce qui est une bonne baisse-dans le remplacement pour la normetime()
fonction.)ou:
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'
fois
fonction ou de latemps
de commande. Letimes
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.La
time
commande UNIX est similaire à la fonction. Vous exécutez une commande de ceet elle renvoie à quelque chose comme ceci
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.
La
time
de commande est plus facile pour un homme d'utiliser, mais letimes
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 direprès du haut de votre programme.
C'est assez bien -- qui va vous donner une haute résolution en temps réel. À moins, bien sûr, que quelqu'un mess avec l'horloge du système.
Ceci est utile pour les timings, la granularité d'une seconde:
Au début...
...n'importe où et partout où vous le souhaitez...
...de fin de programme...
...et avec vos sous-titres: