Apakah ada perintah seperti itu time
, tetapi itu melaporkan lebih banyak statistik? Akan sangat bagus jika saya bisa melakukan sesuatu seperti:
$ statistics some_command
time:
real 0m3.002s
user 0m0.000s
sys 0m0.000s
memory:
min 41K
peak 2.5M
mean 1.1M
. . .
Jika itu bisa lebih jauh, itu akan bagus. Saat ini, untuk debugging, saya akhirnya menatap dengan sungguh-sungguh top
(sebenarnya glances
), atau menaburkan pernyataan di seluruh kode saya.
Jika ada sesuatu yang bisa saya berikan perintah, itu akan fantastis.
EDIT
Saya mungkin telah menemukan solusi: perf
dalam paket linux-tools
dan linux-tools-common
di 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
hasil Anda .Jawaban:
zsh
memiliki perintah bawaan yang lebih kuattime
daripada yangbash
dimiliki, danzsh
versi dapat melaporkan statistik memori.Bahkan jika Anda tidak secara teratur menggunakannya
zsh
sebagai cangkang Anda sehari-hari, Anda bisa menjalankannya ketika Anda perlu mengumpulkan statistik semacam ini.Atur
TIMEFMT
variabel lingkungan untuk menunjukkan output yang Anda inginkan. Inilah yang saya miliki di.zshrc
file saya (mungkin agak terlalu mewah, tapi saya suka):Output sampel:
sumber
time malloc-bytes 10000000
. Itu akan malloc 10 megabita, jadi cobalah dan lihat apa yang dilaporkan zsh.%M
adalah memori maksimum dalam megabita.%M
laporan dalam kilobyteWaktu GNU dapat melaporkan informasi sedikit lebih banyak daripada versi yang dibangun dalam Bash; gunakan
command time
bukan hanyatime
untuk memintanya, dan lihat halaman manual atau info untuk detailnya.sumber
/usr/bin/time -v ./my_command.sh
Berdasarkan jawaban Richard, Anda dapat membuat alias untuk menggunakan waktu GNU dan memberikan informasi memori rata-rata dan maksimum:
atau sesuaikan lingkungan Anda:
Tetapi perlu diketahui bahwa ini hanya berfungsi untuk
/usr/bin/time
yang sering tidak dipanggil secara default.Dari halaman manual:
sumber