Czy jest jakieś polecenie time
, ale to raportuje więcej statystyk? Byłoby wspaniale, gdybym mógł zrobić coś takiego:
$ statistics some_command
time:
real 0m3.002s
user 0m0.000s
sys 0m0.000s
memory:
min 41K
peak 2.5M
mean 1.1M
. . .
Gdyby mogło pójść jeszcze dalej, byłoby świetnie. W tej chwili albo do debugowania, albo patrzę uważnie na top
(właściwie glances
), albo rozsypuję instrukcje w całym kodzie.
Gdybym mógł przekazać polecenie, byłoby to fantastyczne.
EDYTOWAĆ
Mogłem znaleźć rozwiązanie: perf
w pakiecie linux-tools
i linux-tools-common
na 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
wynikach nie ma statystyk pamięci .Odpowiedzi:
zsh
ma mocniejsze wbudowanetime
polecenie niżbash
ma, azsh
wersja może raportować statystyki pamięci.Nawet jeśli nie używasz regularnie
zsh
jako codziennej powłoki, możesz po prostu uruchomić ją, gdy potrzebujesz zebrać tego rodzaju statystyki.Ustaw
TIMEFMT
zmienną środowiskową, aby wskazać pożądany wynik. Oto, co mam w swoim.zshrc
pliku (może trochę zbyt fantazyjne, ale mi się podoba):Przykładowe dane wyjściowe:
źródło
time malloc-bytes 10000000
. Spowoduje to malloc 10 megabajtów, więc spróbuj, a następnie sprawdź, co zgłasza Zsh.%M
maksymalna pamięć jest w megabajtach.%M
raporty w kilobajtachCzas GNU może zgłosić nieco więcej informacji niż wersja wbudowana w Bash; użyj
command time
raczej niż tylkotime
do jego wywołania i zobacz stronę podręcznika lub informacje, aby uzyskać szczegółowe informacje.źródło
/usr/bin/time -v ./my_command.sh
Na podstawie odpowiedzi Richarda możesz utworzyć alias, aby wykorzystać czas GNU i podać informacje o średniej i maksymalnej pamięci:
lub dostosuj swoje środowisko:
Należy jednak pamiętać, że działa to tylko w przypadku,
/usr/bin/time
gdy często nie jest wywoływane domyślnie.Ze strony podręcznika:
źródło