Existe-t-il une commande similaire time
, mais qui rapporte plus de statistiques? Ce serait génial si je pouvais faire quelque chose comme:
$ statistics some_command
time:
real 0m3.002s
user 0m0.000s
sys 0m0.000s
memory:
min 41K
peak 2.5M
mean 1.1M
. . .
Si cela pouvait aller encore plus loin, ce serait formidable. En ce moment, pour le débogage, je finis par regarder attentivement top
(en fait glances
) ou parsemer des instructions tout au long de mon code.
S'il y avait quelque chose auquel je pouvais passer une commande, ce serait fantastique.
MODIFIER
J'aurais peut-être trouvé une solution: perf
dans le package linux-tools
et linux-tools-common
sur Ubuntu 12.04.
$ perf stat ./someprocess
Performance counter stats for './someprocess':
12007.384578 task-clock # 0.996 CPUs utilized
1,092 context-switches # 0.000 M/sec
16 CPU-migrations # 0.000 M/sec
295,102 page-faults # 0.025 M/sec
40,553,682,299 cycles # 3.377 GHz [83.33%]
18,400,458,723 stalled-cycles-frontend # 45.37% frontend cycles idle [83.35%]
8,356,832,355 stalled-cycles-backend # 20.61% backend cycles idle [66.64%]
56,930,684,595 instructions # 1.40 insns per cycle
# 0.32 stalled cycles per insn [83.34%]
9,083,443,825 branches # 756.488 M/sec [83.35%]
3,431,737 branch-misses # 0.04% of all branches [83.33%]
12.051963969 seconds time elapsed
perf
résultats.Réponses:
zsh
a unetime
commande intégrée plus puissante que labash
nôtre, et lazsh
version peut rapporter des statistiques de mémoire.Même si vous ne l'utilisez pas régulièrement
zsh
comme shell au jour le jour, vous pouvez simplement l'exécuter lorsque vous avez besoin de collecter ce type de statistiques.Définissez la
TIMEFMT
variable d'environnement pour indiquer la sortie souhaitée. Voici ce que j'ai dans mon.zshrc
dossier (peut-être un peu trop fantaisiste, mais j'aime ça):Exemple de sortie:
la source
time malloc-bytes 10000000
. Cela va malloc 10 mégaoctets, alors essayez-le et voyez ce que rapporte zsh.%M
la mémoire maximale est en mégaoctets.%M
rapports en kiloLe temps GNU peut rapporter un peu plus d'informations que la version intégrée à Bash; utilisez
command time
plutôt que de simplement l'time
invoquer, et consultez la page de manuel ou les informations pour plus de détails.la source
/usr/bin/time -v ./my_command.sh
Sur la base de la réponse de Richard, vous pouvez créer un alias pour utiliser le temps GNU et fournir des informations sur la mémoire moyenne et maximale:
ou ajustez votre environnement:
Mais sachez que cela ne fonctionne que pour
/usr/bin/time
lequel n'est souvent pas appelé par défaut.Depuis la page de manuel:
la source