Existe algum comando como time
, mas que reporta mais estatísticas? Seria ótimo se eu pudesse fazer algo como:
$ statistics some_command
time:
real 0m3.002s
user 0m0.000s
sys 0m0.000s
memory:
min 41K
peak 2.5M
mean 1.1M
. . .
Se pudesse ir ainda mais longe, seria ótimo. No momento, para depuração, acabo olhando atentamente top
(na verdade glances
) ou espalhando instruções por todo o meu código.
Se houvesse algo para o qual eu pudesse passar um comando, isso seria fantástico.
EDITAR
Eu poderia ter encontrado uma solução: perf
no pacote linux-tools
e linux-tools-common
no 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
resultados.Respostas:
zsh
possui umtime
comando interno mais poderoso do quebash
possui e azsh
versão pode relatar estatísticas de memória.Mesmo que você não use regularmente
zsh
como seu shell do dia-a-dia, basta executá-lo quando precisar reunir esses tipos de estatísticas.Defina a
TIMEFMT
variável de ambiente para indicar a saída desejada. Aqui está o que eu tenho no meu.zshrc
arquivo (talvez um pouco extravagante, mas eu gosto):Saída de amostra:
fonte
time malloc-bytes 10000000
. Isso causará 10 megabytes, então tente e veja o que o zsh informa.%M
é a memória máxima em megabytes.%M
relatórios em kilobytesO tempo GNU pode relatar um pouco mais de informações do que a versão incorporada no Bash; use em
command time
vez de apenastime
invocá-lo e consulte a página de manual ou informações para obter detalhes.fonte
/usr/bin/time -v ./my_command.sh
Com base na resposta de Richard, você pode criar um alias para usar o tempo GNU e fornecer informações de memória média e máxima:
ou ajuste seu ambiente:
Mas lembre-se de que isso só funciona para o
/usr/bin/time
qual geralmente não é chamado por padrão.Na página do manual:
fonte