Perintah penggunaan memori dengan sintaksis mirip dengan perintah waktu
18
Perintah apa yang menunjukkan penggunaan memori dari suatu program, saya mencari perintah yang mudah digunakan dan memiliki sintaksis yang mirip dengan timeperintah. Saya mencoba untuk menemukan penggunaan memori dari program hashing md5 yang ditulis dalam C dan membutuhkan 7 detik untuk hash "hello world".
Saya menggunakan sistem operasi android dengan busybox diinstal.
Ironisnya, timemungkin ada jawaban untuk Anda, tetapi kali ini jawaban itu seharusnya bukan shell-built-in timetetapi yang mandiri:
$ /usr/bin/time -v uname
Linux
Command being timed: "uname"
User time (seconds): 0.00
System time (seconds): 0.00
Percent of CPU this job got: 2%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.12
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 896
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 1
Minor (reclaiming a frame) page faults: 304
Voluntary context switches: 3
Involuntary context switches: 3
Swaps: 0
File system inputs: 56
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
Ini menghitung MAX RSS, bukan VSS, jadi apakah itu akan berguna untuk Anda atau tidak tergantung pada tugas Anda.
UPD. : Mac OS X '"think" sedikit berbeda tapi tetap saja time:
/usr/bin/time -l /Applications/Opera.app/Contents/MacOS/Opera
244.63 real 54.34 user 26.44 sys
284827648 maximum resident set size
0 average shared memory size
0 average unshared data size
0 average unshared stack size
711407 page reclaims
1272 page faults
0 swaps
155 block input operations
251 block output operations
98542 messages sent
68330 messages received
16 signals received
699 voluntary context switches
468999 involuntary context switches
+1, senang mengetahui hal ini. Namun waspadalah, ini adalah fitur khusus GNU. Apakah Android termasuk GNU time(1)?
Warren Young
Shell builtin? Baik halaman bashmaupun zshmanual tidak menyebutkan ini. Apakah Anda bingung dengan itu times?
Warren Young
@WarrenYoung, for SH in zsh bash dash; do $SH -c 'echo $0; type time'; done - zsh time adalah kata yang disediakan - bash time adalah kata kunci shell - waktu dasbor adalah / usr / bin / time
poige
@ WarrenYoung, dan tidak, Android tidak memilikinya secara default, tetapi karena /usr/bin/timedibangun di atas panggilan sistem wait3atau wait4(saya tidak ingat persis), dapat dengan mudah diterapkan di sana juga.
poige
By the way, waktu macOS menunjukkan penggunaan memori maksimum dalam byte dan Linux dalam kilobyte.
Outputnya akan memiliki banyak hal yang tidak relevan, tetapi ringkasan tumpukannya melakukan apa yang Anda inginkan:
==91383== HEAP SUMMARY:
==91383== in use at exit: 157,643 bytes in 364 blocks
==91383== total heap usage: 2,999 allocs, 2,635 frees, 306,450 bytes allocated
time(1)
?bash
maupunzsh
manual tidak menyebutkan ini. Apakah Anda bingung dengan itutimes
?for SH in zsh bash dash; do $SH -c 'echo $0; type time'; done
- zsh time adalah kata yang disediakan - bash time adalah kata kunci shell - waktu dasbor adalah / usr / bin / time/usr/bin/time
dibangun di atas panggilan sistemwait3
atauwait4
(saya tidak ingat persis), dapat dengan mudah diterapkan di sana juga.Anda dapat menggunakan
valgrind
ini:Outputnya akan memiliki banyak hal yang tidak relevan, tetapi ringkasan tumpukannya melakukan apa yang Anda inginkan:
sumber
valgrind
tetapi sepertinya ada port untuk android, saya akan mencoba dan menginstalnya.