TCL - comment savoir combien de temps une fonction a travaillé?
Dire que j'ai un proc et le proc se compose de plusieurs déclarations et des appels de fonction. Comment je peux savoir combien de temps la fonction a prises jusqu'à présent?
Pour mesurer le temps une partie du code a pris, vous pouvez soit utiliser time ou clock.
La time commande exécuter son script arguments et retourne une description de combien de temps le script a pris, en millisecondes (plus un texte descriptif, qui est facile à couper avec lindex). Si vous êtes vraiment en train de faire l'analyse des performances de travail, vous pouvez fournir une option de compter argument qui fait que le script sera exécuté à plusieurs reprises, mais pour juste de surveillance générale, vous pouvez l'ignorer.
La clock commande vous permet d'obtenir toutes sortes de dates (ainsi que de faire de mise en forme, l'analyse et l'arithmétique avec des temps). Les plus grossiers est obtenu avec clock seconds, qui retourne la quantité de temps depuis le début de l'époque Unix (en secondes calculée avec le temps civil; qu'est ce que vous voulez, sauf si vous êtes en train de faire quelque chose de spécialisé). Si vous avez besoin de plus de détails, vous devez utiliser clock milliseconds ou clock microseconds. Il y a aussi clock clicks, mais il n'est généralement pas défini ce que l'unité de comptage (à moins que vous passez le -milliseconds ou -microseconds option). C'est à vous de faire tourner les horodateurs en quelque chose d'utile pour vous.
Si vous êtes timing choses sur Tcl 8.4 (ou avant!) alors vous êtes contraint à l'utilisation de time, clock seconds ou clock clicks (et même le -microseconds option est absente; il n'y a pas une horloge de résolution exposés à 8.4). Dans ce cas, vous devriez envisager de passer à 8.5, comme c'est généralement plus rapide. Plus rapide est Bonne! (Si vous êtes à l'aide de pré-8.4, certainement de mise à niveau que vous êtes énormément de retard sur le support avant.)
De dire combien de temps une fonction a pris, vous pouvez soit utiliser le time de commande (enroulé autour de l'appel de la fonction) ou de l'utilisation clock clicks pour obtenir l'heure en cours avant et pendant la fonction. Le time option est simple, mais il ne peut de temps une fonction entière (et ne vous donneront qu'une fois lorsque la fonction retourne). À l'aide de clock clicks peut être fait à plusieurs reprises, mais vous aurez besoin de soustraire l'heure actuelle à partir de l'heure de départ vous-même.
Par exemple je lance mon script TCL et je veux mesurer le temps écoulé. Comment je peux faire? J'ai mis à jour ma réponse pour que; j'ai aussi de la modification de votre question pour clarifier ce que vous demandez sur le temps écoulé, pas le temps à venir. S'il vous plaît écrire un exemple avec l'horloge clics pour mesurer le temps d'une fonction en cours d'exécution. Je ne comprends pas ce qui ne l'horloge "clics" les retours. Qu'est-ce que "de temps à haute résolution de la valeur"? (Voir ici: wiki.tcl.tk/4615 ) Je voudrais utiliser clock clicks -milliseconds depuis que retourne le temps en unités connues.
très brut exemple serait quelque chose comme:
En utilisant le temps de proc, vous pouvez effectuer les opérations suivantes:
OriginalL'auteur TrojanName
Pour mesurer le temps une partie du code a pris, vous pouvez soit utiliser
time
ouclock
.La
time
commande exécuter son script arguments et retourne une description de combien de temps le script a pris, en millisecondes (plus un texte descriptif, qui est facile à couper aveclindex
). Si vous êtes vraiment en train de faire l'analyse des performances de travail, vous pouvez fournir une option de compter argument qui fait que le script sera exécuté à plusieurs reprises, mais pour juste de surveillance générale, vous pouvez l'ignorer.La
clock
commande vous permet d'obtenir toutes sortes de dates (ainsi que de faire de mise en forme, l'analyse et l'arithmétique avec des temps). Les plus grossiers est obtenu avecclock seconds
, qui retourne la quantité de temps depuis le début de l'époque Unix (en secondes calculée avec le temps civil; qu'est ce que vous voulez, sauf si vous êtes en train de faire quelque chose de spécialisé). Si vous avez besoin de plus de détails, vous devez utiliserclock milliseconds
ouclock microseconds
. Il y a aussiclock clicks
, mais il n'est généralement pas défini ce que l'unité de comptage (à moins que vous passez le-milliseconds
ou-microseconds
option). C'est à vous de faire tourner les horodateurs en quelque chose d'utile pour vous.Si vous êtes timing choses sur Tcl 8.4 (ou avant!) alors vous êtes contraint à l'utilisation de
time
,clock seconds
ouclock clicks
(et même le-microseconds
option est absente; il n'y a pas une horloge de résolution exposés à 8.4). Dans ce cas, vous devriez envisager de passer à 8.5, comme c'est généralement plus rapide. Plus rapide est Bonne! (Si vous êtes à l'aide de pré-8.4, certainement de mise à niveau que vous êtes énormément de retard sur le support avant.)OriginalL'auteur Donal Fellows
De dire combien de temps une fonction a pris, vous pouvez soit utiliser le
time
de commande (enroulé autour de l'appel de la fonction) ou de l'utilisationclock clicks
pour obtenir l'heure en cours avant et pendant la fonction. Letime
option est simple, mais il ne peut de temps une fonction entière (et ne vous donneront qu'une fois lorsque la fonction retourne). À l'aide declock clicks
peut être fait à plusieurs reprises, mais vous aurez besoin de soustraire l'heure actuelle à partir de l'heure de départ vous-même.J'ai mis à jour ma réponse pour que; j'ai aussi de la modification de votre question pour clarifier ce que vous demandez sur le temps écoulé, pas le temps à venir.
S'il vous plaît écrire un exemple avec l'horloge clics pour mesurer le temps d'une fonction en cours d'exécution.
Je ne comprends pas ce qui ne l'horloge "clics" les retours. Qu'est-ce que "de temps à haute résolution de la valeur"? (Voir ici: wiki.tcl.tk/4615 )
Je voudrais utiliser
clock clicks -milliseconds
depuis que retourne le temps en unités connues.OriginalL'auteur Jeremiah Willcock
Dans le cas où votre vraiment à la recherche d'une sorte de générateur de profils, avoir un regard sur le profileur paquet dans Tcllib:
http://tcllib.sourceforge.net/doc/profiler.html
OriginalL'auteur schlenk