Comment chronométrer une commande spécifique?

68

(L'équivalent Linux de TimeThis.exe)

Quelque chose comme:

timethis wget foo.com
Receiving foo.com  
...

wget foo.com took 3 seconds.
ripper234
la source

Réponses:

95

Essayez juste timeau lieu de timethis.

Sachez toutefois qu’il existe souvent une version de shell intégrée à Time et une version binaire, qui donneront des résultats dans différents formats:

$ time wget -q -O /dev/null https://unix.stackexchange.com/

real    0m0.178s
user    0m0.003s
sys     0m0.005s

contre

$ \time wget -q -O /dev/null https://unix.stackexchange.com/
0.00user 0.00system 0:00.17elapsed 4%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+613minor)pagefaults 0swaps

Contrairement à votre programme "timethis", vous obtenez trois valeurs. C'est décomposé dans Qu'est-ce que "l'heure système" lors de l'utilisation de "heure" en ligne de commande , mais en bref: " réel " signifie "heure d'horloge", tandis que l' utilisateur et le système affichent l'heure de la CPU, répartie entre le code normal et les appels système.

mattdm
la source
26

En utilisant l'exécutable timeau lieu du shell intégré, vous pouvez spécifier le format de sortie et les valeurs. Par exemple, obtenir le temps réel réel avec le nom de la commande et les paramètres

/usr/bin/time --format='%C took %e seconds' sleep 3
sleep 3 took 3.00 seconds

Notez que vous devez spécifier le chemin pour time, sinon vous utiliserez par défaut le shell intégré.

forcefsck
la source
4
remarquez que: le chemin est important. Ne vous contentez pas d'utiliser le «temps» dans bash. Au lieu de cela, utilisez / usr / bin / time
CodeFarmer
1
Quelle est la différence si /usr/binest dans leur PATH?
galois
@galois La différence est que sans le chemin explicite, l' timeutilitaire intégré au shell sera utilisé.
Kusalananda
Peut également utiliser command timeou \timeexécuter l'utilitaire à la place de la fonction intégrée.
forcefsck
0

@galois: Les différents shell ont une poignée de commandes "intégrées" qui priment sur tout ce qui se trouve sur le chemin. Normalement, c'est avantageux. les fonctions intégrées tendent à fonctionner plus rapidement (car n’appelant pas de fichier externe) et donnent généralement le résultat souhaité (c.-à-d. que, dans le cas de la commande time, vous ne vous souciez pas de la version que vous utilisez, sauf si vous souhaitez utiliser le " --format "drapeau).

Donc, "le temps" sans aucun caractère spécial (comme /) pour donner l’impression qu’un chemin finira par exécuter le programme intégré, quelle que soit l’aspect de votre PATH.

Pour forcer le shell à utiliser la commande time externe, vous devez indiquer le chemin

Tom Payerle
la source