Есть ли какая-либо команда, подобная time
, но которая сообщает больше статистики? Было бы здорово, если бы я мог сделать что-то вроде:
$ statistics some_command
time:
real 0m3.002s
user 0m0.000s
sys 0m0.000s
memory:
min 41K
peak 2.5M
mean 1.1M
. . .
Если бы это могло пойти еще дальше, это было бы здорово. Прямо сейчас, для отладки, я либо пристально смотрю на top
(на самом деле glances
), либо разбрасываю операторы по всему коду.
Если бы я мог передать команду, это было бы здорово.
РЕДАКТИРОВАТЬ
Я мог бы найти решение: perf
в пакете linux-tools
и linux-tools-common
на 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
результатах нет статистики памяти .Ответы:
zsh
имеет более мощную встроеннуюtime
команду, чемbash
имеет, иzsh
версия может сообщать статистику памяти.Даже если вы не используете регулярную
zsh
оболочку на регулярной основе , вы можете просто запустить ее, когда вам понадобится собрать такую статистику.Установите
TIMEFMT
переменную окружения, чтобы указать желаемый результат. Вот то, что у меня есть в моем.zshrc
файле (возможно, слишком причудливый, но мне это нравится):Образец вывода:
источник
time malloc-bytes 10000000
. Это будет malloc 10 мегабайт, так что попробуйте и посмотрите, что сообщает zsh.%M
это максимальный объем памяти в мегабайтах.%M
отчеты в килобайтахВремя GNU может сообщить немного больше информации, чем версия, встроенная в Bash; используйте
command time
вместо того, чтобы простоtime
вызывать его, и смотрите страницу руководства или информацию для деталей.источник
/usr/bin/time -v ./my_command.sh
Основываясь на ответе Ричарда, вы можете создать псевдоним для использования времени GNU и предоставления средней и максимальной информации о памяти:
или настройте свою среду:
Но имейте в виду, что это работает только для
/usr/bin/time
которых часто не вызывается по умолчанию.Со страницы руководства:
источник