J'utilise Ubuntu 18.04 et je suis nouveau pour Ubuntu et Linux en général. J'essaie de mesurer le temps d'exécution d'une commande à la milliseconde près. J'aimerais également ajouter cette heure à un fichier, car je le fais souvent dans une boucle for. Enfin, j'aimerais avoir la syntaxe la plus simple et la plus lisible.
Longue histoire courte: j'aimerais que la commande /usr/bin/time
renvoie un résultat précis à la milliseconde près.
J'ai lu d'autres discussions mentionnant une variable d'environnement de format d'heure, mais jamais comment la modifier.
Merci d'avance pour l'aide.
EDIT: Tenant compte de toutes les réponses, la solution ressemblait à quelque chose comme:
#!/bin/bash
ts=$(date +%s%N)
command
echo "formatting $((($(date +%s%N) - $ts)/1000000)) formatting" >> file_to_append_time_to
La commande time
n'est pas capable de le faire directement. Il génère une heure au format fractionnaire, de sorte qu'il peut être ré-analysé en millisecondes en multipliant par 1000:
$ time sleep 1s
> real 0m1.006s
$ echo '1.006 * 1000' | bc
> 1006.000
Cela signifie que vous pouvez créer une commande qui le fait via:
{ time $@ ; } |& grep real | sed -E 's/[^0-9\.]+//g' | tr -d '\n' | (cat && echo " * 1000") | bc
Il s’agit essentiellement d’analyser la sortie de time
et de la multiplier par 1 000. C’est un gâchis parce que, bien, bash.
Ce script utilisateur Infineight posté sur Stack Overflow :
#!/bin/bash
ts=$(date +%s%N)
$@
echo $((($(date +%s%N) - $ts)/1000000))
Cela (je l’ai développé pour plus de lisibilité) enregistre le timestamp actuel de la nanoseconde de date
name__, exécute la commande, puis effectue une soustraction pour calculer le temps écoulé et le formate en millisecondes.
Lors de mes tests, ils semblaient tous deux donner les mêmes résultats.