timeコマンドに類似した構文のメモリ使用量コマンド


18

どのコマンドがプログラムのメモリ使用量を示しているか、私は使いやすく、timeコマンドと同様の構文を持つコマンドを探しています。Cで記述され、「hello world」をハッシュするのに7秒かかるmd5ハッシュプログラムのメモリ使用量を見つけようとしています。

busyboxがインストールされた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

ただし、VSSではなくMAX RSSをカウントするため、役立つかどうかはタスクに大きく依存します。

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)か?
ウォーレンヤング

シェルビルトイン?このマニュアルbashzshマンページもこれについて言及していません。と混同していtimesますか?
ウォーレンヤング

@WarrenYoung、for SH in zsh bash dash; do $SH -c 'echo $0; type time'; done — zsh時間は予約語です— bash時間はシェルキーワードです—ダッシュ時間は/ usr / bin / time
poige

@WarrenYoung、といやが、Androidはデフォルトでそれを持っていない、しかしので、/usr/bin/timeシステムコールの上に重く構築されているwait3wait4(私は正確に覚えていない)、それは簡単にそこにも行動に入れることができます。
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いませんが、アンドロイド用のポートがあるようです、私はそれを試してインストールします。
カイルk

1
@kylek:AndroidでネイティブCPUソフトウェア開発を行っている場合は、とにかくそれを使いたいと思うでしょう。
ウォーレンヤング
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.