คำสั่งการใช้หน่วยความจำที่มีไวยากรณ์คล้ายกับคำสั่งเวลา


18

คำสั่งอะไรแสดงการใช้งานหน่วยความจำของโปรแกรมฉันกำลังมองหาคำสั่งที่ใช้งานง่ายและมีไวยากรณ์คล้ายกับtimeคำสั่ง ฉันพยายามค้นหาการใช้งานหน่วยความจำของโปรแกรมแฮช md5 ที่เขียนใน C และใช้เวลา 7 วินาทีในการแฮช "hello world"

ฉันใช้ระบบปฏิบัติการ android พร้อมติดตั้ง busybox

คำตอบ:


24

กระแทกแดกดันtimeอาจมีคำตอบให้คุณ แต่คราวนี้มันไม่ควรที่จะสร้างเชลล์timeแต่ใช้แบบสแตนด์อโลนแทน:

$ /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

มันนับ MAX RSS แม้ว่าไม่ใช่ VSS ดังนั้นมันจะมีประโยชน์สำหรับคุณหรือไม่ขึ้นอยู่กับงานที่หนักหน่วงของคุณ

UPD : Mac OS X '"คิดว่า" แตกต่างกันเล็กน้อย แต่ก็ยัง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 น่ารู้ แต่ระวังนี่เป็นคุณสมบัติเฉพาะของ GNU Android รวม GNU time(1)หรือไม่
Warren Young

เชลล์บิวด์อิน ทั้งbashมิได้zshmanpages นี่กล่าวถึงนี้ คุณสับสนด้วยtimesหรือเปล่า
Warren Young

@WarrenYoung for SH in zsh bash dash; do $SH -c 'echo $0; type time'; done - เวลา zsh เป็นคำที่สงวนไว้ - เวลาทุบตีเป็นคำหลักของเชลล์ - เวลาในการประคือ / usr / bin / เวลา
poige

@WarrenYoung และ nope, Android ไม่มีค่าเริ่มต้นแต่เนื่องจาก/usr/bin/timeถูกสร้างขึ้นอย่างหนักบนการโทรของระบบwait3หรือwait4(ฉันจำไม่ได้แน่นอน) ก็สามารถนำไปปฏิบัติได้อย่างง่ายดายเช่นกัน
poige

ตามเวลา macOS แสดงการใช้หน่วยความจำสูงสุดเป็นไบต์และ Linux เป็นกิโลไบต์
user31389

2

คุณสามารถใช้valgrindสิ่งนี้:

$ valgrind myprogram arg1 arg2

ผลลัพธ์ของมันจะมีสิ่งที่ไม่เกี่ยวข้องจำนวนมาก แต่ข้อมูลสรุปของฮีปจะทำสิ่งที่คุณต้องการ:

==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

ฉันไม่มีvalgrindแต่ดูเหมือนว่ามีพอร์ตสำหรับ Android ฉันจะลองและติดตั้ง
kyle k

1
@kylek: หากคุณกำลังพัฒนาซอฟท์แวร์ CPU ของตัวเครื่องใน Android คุณต้องการใช้มันต่อไป
Warren Young
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.