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


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.