Zaman komutuna benzer sözdizimi ile bellek kullanım komutu


18

Ne komut bir programın bellek kullanımını gösterir, ben kullanımı basit ve timekomuta benzer sözdizimi olan bir komut arıyorum . C ile yazılmış ve "Merhaba dünya" hash 7 saniye süren bir md5 karma programı bellek kullanımını bulmaya çalışıyorum.

Ben meşgul kutusu yüklü android işletim sistemi kullanıyorum.

Yanıtlar:


24

İronik olarak, timesizin için bir cevap olabilir, ancak bu kez bunun kabuk yerleşik timedeğil, bağımsız bir tane olması gerekir :

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

VSS değil, MAX RSS sayar, bu yüzden sizin için yararlı olur mu yoksa çok fazla görevinize bağlıdır.

UPD. : Mac OS X '"think" biraz farklı ama yine de 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, bunu bilmek güzel. Ancak dikkat edin, bu GNU'ya özgü bir özelliktir. Android GNU içeriyor time(1)mu?
Warren Young

Shell yerleşik mi? Ne buradaki bashne de zshmanajlarda bundan bahsediliyor. Onunla karıştırıyor musun times?
Warren Young

@WarrenYoung, for SH in zsh bash dash; do $SH -c 'echo $0; type time'; done - zsh zamanı ayrılmış bir kelimedir - bash zamanı bir kabuk anahtar kelimesidir - tire süresi / usr / bin / time
poige 14:13

@WarrenYoung ve hayır, Android varsayılan olarak sahip değildir, ancak bu yana /usr/bin/timesistem çağrıları üzerine ağır inşa edilmiştir wait3veya wait4(ben tam olarak hatırlamıyorum), kolayca orada yanı eyleme konabilir.
poige

Bu arada macOS zamanı bayt cinsinden maksimum bellek kullanımını ve kilobayt cinsinden Linux'u gösterir.
user31389

2

Bunun için kullanabilirsiniz valgrind:

$ valgrind myprogram arg1 arg2

Çıktısının bir sürü alakasız şeyi olacak, ancak yığın özeti istediğinizi yapıyor:

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

Ben yok valgrindama android için bir bağlantı noktası var gibi görünüyor, ben denemek ve yüklemek.
kyle k

1
@kylek: Android'de herhangi bir yerel CPU yazılımı geliştirmesi yapıyorsanız, yine de olmasını istersiniz.
Warren Young
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.