¿Hay algún comando como time
, pero que informa más estadísticas? Sería genial si pudiera hacer algo como:
$ statistics some_command
time:
real 0m3.002s
user 0m0.000s
sys 0m0.000s
memory:
min 41K
peak 2.5M
mean 1.1M
. . .
Si pudiera ir más allá, sería genial. En este momento, para la depuración, termino mirando fijamente top
(en realidad glances
) o rociando declaraciones a través de mi código.
Si hubiera algo a lo que pudiera pasarle un comando, sería fantástico.
EDITAR
Podría haber encontrado una solución: perf
en el paquete linux-tools
y linux-tools-common
en 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
( La página que ayudó ) .
perf
resultados.Respuestas:
zsh
tiene untime
comando incorporado más potente que el quebash
tiene, y lazsh
versión puede informar estadísticas de memoria.Incluso si no lo usa regularmente
zsh
como su shell diario, simplemente puede ejecutarlo cuando necesite recopilar este tipo de estadísticas.Establezca la
TIMEFMT
variable de entorno para indicar la salida que desea. Esto es lo que tengo en mi.zshrc
archivo (quizás un poco demasiado elegante, pero me gusta):Salida de muestra:
fuente
time malloc-bytes 10000000
. Eso mallocará 10 megabytes, así que pruébelo y luego vea qué informa zsh.%M
es la memoria máxima en megabytes.%M
informes en kilobytesEl tiempo de GNU puede informar un poco más de información que la versión integrada en Bash; use en
command time
lugar de solotime
invocarlo, y vea la página de manual o la información para más detalles.fuente
/usr/bin/time -v ./my_command.sh
Según la respuesta de Richard, puede crear un alias para usar el tiempo GNU y proporcionar información de memoria promedio y máxima:
o ajusta tu entorno:
Pero tenga en cuenta que esto solo funciona para lo
/usr/bin/time
que a menudo no se llama de forma predeterminada.Desde la página del manual:
fuente