web-dev-qa-db-fra.com

/ usr / bin / time - formatage du temps écoulé en millisecondes

J'utilise le programme/usr/bin/time pour mesurer le temps d'une commande. avec le paramètre --format, je peux formater la sortie. par exemple.

/usr/bin/time -f "%e" ls

existe-t-il un moyen de produire une plus grande précision des secondes écoulées? ou simplement produire des millisecondes, pas des secondes?

Dans le manuel de/usr/bin/time, il ne dit que quelques secondes, mais il y a peut-être un moyen et quelqu'un peut m'aider ... merci!

EDIT : Je connais la commande bash "time" qui utilise le format de la variable d'environnement "TIMEFORMAT". désolé, mais je ne veux pas changer cet env-var ... semble risqué pour moi, la solution devrait être quelque chose qui ne change pas du tout le système en cours d'exécution :)

25
Preexo

Une possibilité consiste à utiliser la commande date:

ts=$(date +%s%N) ; my_command ; tt=$((($(date +%s%N) - $ts)/1000000)) ; echo "Time taken: $tt milliseconds"

%Ndevrait retourner nanosecondes , et 1 milliseconde est 1000000 nanoseconde, donc par division retournerait le temps nécessaire pour exécuter my_command en millisecondes.

[~ # ~] notez [~ # ~] que le %Nn'est pas pris en charge sur tous les systèmes, mais la plupart d'entre eux.

36
devnull

Pour plus de commodité, j'ai transformé la réponse de devnull en script (je l'ai nommé milliseconde fois).

#!/bin/bash
ts=$(date +%s%N) ; $@ ; tt=$((($(date +%s%N) - $ts)/1000000)) ; echo "Time taken: $tt milliseconds"

J'ai mis le script dans /usr/local/bin.
Lui a donné les droits d'exécution chmod +x /usr/local/bin/millisecond-time.
Maintenant, je peux l'utiliser comme ceci: millisecond-time my_command

P.s. Ce serait un commentaire si j'avais le représentant ".

8
Infineight