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
( 役に立ったページ )
zsh
にはtime
よりも強力な組み込みbash
コマンドがあり、zsh
バージョンはメモリ統計を報告できます。
日常のシェルとしてzsh
を定期的に使用していなくても、これらの種類の統計を収集する必要があるときに実行することができます。
TIMEFMT
環境変数を設定して、必要な出力を指定します。これが私の.zshrc
ファイル(少々派手すぎるかもしれませんが、気に入っています):
TIMEFMT='%J %U user %S system %P cpu %*E total'$'\n'\
'avg shared (code): %X KB'$'\n'\
'avg unshared (data/stack): %D KB'$'\n'\
'total (sum): %K KB'$'\n'\
'max memory: %M MB'$'\n'\
'page faults from disk: %F'$'\n'\
'other page faults: %R'
出力例:
% time ls
[... the output of ls, followed by:]
ls -G 0.00s user 0.00s system 91% cpu 0.004 total
avg shared (code): 0 KB
avg unshared (data/stack): 0 KB
total (sum): 0 KB
max memory: 668 MB
page faults from disk: 0
other page faults: 337
GNU時間 は、Bashに組み込まれているバージョンよりも少し多くの情報を報告できます。使用する command time
だけではなくtime
を呼び出して、詳細については、manページまたは情報を参照してください。
リチャードの答えに基づいて、GNU時間を使用するエイリアスを作成し、平均および最大メモリ情報を提供できます。
alias time="$(which time) -f '\t%E real,\t%U user,\t%S sys,\t%K amem,\t%M mmem'"
または環境を調整します。
export TIME='\t%E real,\t%U user,\t%S sys,\t%K amem,\t%M mmem'
ただし、これは/usr/bin/time
でのみ機能することに注意してください。これは、デフォルトでは呼び出されないことがよくあります。
Manページから:
Kプロセスの平均合計(データ+スタック+テキスト)メモリ使用量(キロバイト単位)。
M存続期間中のプロセスの常駐セットの最大サイズ(キロバイト単位)。