2

私は、同じ仕事をする別のアプリケーションと比較する必要があるアプリケーションを書きました..私のものは OCaml で、他のアプリケーションは Java です。

プログラムを 2 回実行し、これらの実行で経過した時間中の RAM の使用状況を監視したいと考えています。どちらのプログラムもメモリと CPU を大量に消費するので、比較するのに十分なデータがありますが、方法がわかりません。

異なる言語で記述されたアプリケーションのベンチマークを行うことはあまり意味がないことはわかっていますが、プログラムの RAM 使用量を単純に監視し、結果としてデータ セットまたはグラフを提供するツールはありますか?

編集: 理想的なオペレーティング システムは Mac OS X または unix です

4

4 に答える 4

4

私はygrekに匹敵するソリューションを使用しています。Unix を使用している限り、実装言語に関しては非常に普遍的です。小さな問題は、この目的で両方とも使用できるコマンドtopとその両方が、BSD Unix (Mac OS X の派生元) と Linux で異なる動作をすることです。ps彼のコマンドラインはLinux用だと思います。

Mac OS X の場合、以下を使用しました。

top -s 10 -l 10000 | grep <PID or process name>

Linux の場合:

top -d 10 -n 10000 | grep <PID or process name>

10 は秒単位のサンプリング期間です。

OCaml の GC から情報を取得したい場合は、OCaml の GC モジュールを使用できますが、Java プログラムの動作とは直接比較できません。

追加するために編集: GC が関係する場合、メモリのオーバーヘッドと CPU 時間のオーバーヘッドの間にはトレードオフがあります。GC は、デッド ブロックをより早く利用できるようにするために、より多くの作業を行うことができるため、メモリ消費量を低く抑えることができます。これにより 2 つのプログラムを比較するのが難しい場合は、OCaml の GC を調整して、Java GC と同じ種類のトレードオフを使用するようにすることができます。これは GC モジュールに記載されています。Javaでもこの設定を調整できると思います。

于 2010-09-16T08:36:15.670 に答える
3
while : ; do ps --no-header -o %cpu,vsz,rss -p PID; sleep 1 ; done
于 2010-09-16T07:48:34.007 に答える
2

Valgrind のMassifツールは、ネイティブ コードに対してこれを行うことができます。

于 2010-09-23T20:56:59.883 に答える
2

/usr/bin/jvisualvm で Java の使用状況を監視できます。

Activity Monitor プログラムでは、通常の Unix プログラムのリソース使用量を概算できます。

于 2010-09-15T22:13:38.830 に答える