Команда використання пам'яті з синтаксисом, аналогічним команді часу


18

Яка команда показує використання пам'яті програми, я шукаю команду, яка проста у використанні і має аналогічний синтаксис з timeкомандою. Я намагаюся знайти в пам'яті використання програми хешування md5, яка написана на С і займає 7 секунд, щоб хеш "привіт світ".

Я використовую операційну систему Android з інстальованим зайнятим.

Відповіді:


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)?
Воррен Янг

Shell вбудований? Ні про це bashні zshпро це не згадують. Ви плутаєте це times?
Воррен Янг

@WarrenYoung, for SH in zsh bash dash; do $SH -c 'echo $0; type time'; done - zsh time - це зарезервоване слово - bash time - ключове слово оболонки - тире час / usr / bin / time
poige

@WarrenYoung і ні, Android не має його за замовчуванням, але оскільки /usr/bin/timeвін сильно побудований на основі системних дзвінків wait3або wait4(точно не пам’ятаю), його можна легко ввести і в дію.
poige

До речі, час macOS показує максимальне використання пам'яті в байтах, а Linux - у кілобайтах.
користувач31389

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: Якщо ви робите будь-яку вроджену розробку програмного забезпечення для процесорів на Android, ви все одно хочете мати його.
Warren Young
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.