Lệnh sử dụng bộ nhớ với cú pháp tương tự lệnh thời gian


18

Lệnh nào cho thấy việc sử dụng bộ nhớ của một chương trình, tôi đang tìm kiếm một lệnh đơn giản để sử dụng và có cú pháp tương tự như timelệnh. Tôi đang cố gắng tìm cách sử dụng bộ nhớ của chương trình băm md5 được viết bằng C và mất 7 giây để băm "hello world".

Tôi đang sử dụng hệ điều hành Android có cài đặt busybox.

Câu trả lời:


24

Trớ trêu thay, timecó thể có câu trả lời cho bạn nhưng lần này không phải là tích hợp sẵn timemà là độc lập thay thế:

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

Tuy nhiên, nó tính MAX RSS, không phải VSS, vì vậy nó có hữu ích cho bạn hay không phụ thuộc rất nhiều vào nhiệm vụ của bạn.

CẬP NHẬT. : "Think" của Mac OS X hơi khác một chút nhưng vẫn là 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, thật tốt khi biết điều này. Nhưng hãy cẩn thận, đây là một tính năng dành riêng cho GNU. Android có bao gồm GNU time(1)không?
Warren Young

Vỏ dựng? Cả các trang bashcũng không có zshở đây đề cập đến điều này. Bạn có nhầm lẫn với nó times?
Warren Young

@WarrenYoung, for SH in zsh bash dash; do $SH -c 'echo $0; type time'; done - zsh time là một từ dành riêng - bash time là một từ khóa shell - thời gian gạch ngang là / usr / bin / time
poige

@WarrenYoung và không, mặc định, Android không có nó, nhưng/usr/bin/timeđược xây dựng dựa trên các cuộc gọi hệ thống wait3hoặc wait4(tôi không nhớ chính xác), nên nó cũng có thể dễ dàng được đưa vào hoạt động.
poige

Bằng cách này, thời gian macOS hiển thị mức sử dụng bộ nhớ tối đa tính bằng byte và Linux tính bằng kilobyte.
dùng31389

2

Bạn có thể sử dụng valgrindcho việc này:

$ valgrind myprogram arg1 arg2

Đầu ra của nó sẽ có rất nhiều thứ không liên quan, nhưng tóm tắt heap của nó làm những gì bạn muốn:

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

Tôi không có valgrindnhưng có vẻ như có một cổng cho Android, tôi sẽ thử và cài đặt nó.
kyle k

1
@kylek: Nếu bạn đang thực hiện bất kỳ phát triển phần mềm CPU gốc nào trên Android, bạn vẫn muốn có nó.
Warren Young
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.