読者です 読者をやめる 読者になる 読者になる

プログラムの使用メモリを知りたい

自分用メモなのでクオリティを期待しないで下さい.

計算機実験を行う際,計算時間や使用した最大メモリを知りたい場合が多々ある.
時間を計測したい場合は簡単だが(精度の話を考えると難しいが).
メモリを知りたい場合は,個々のOS事に作法があるようでいろいろ難しいようだ.
(Windowsは簡単だと聞いた)

計測のやり方は大きく分けて2つある,プログラムの中で計測するか,外で計測するかだ
1. 外部プログラムを走らせて実行(/usr/bin/time)
2. プログラム内部でgetrusageを呼びru_maxrss(使用した最大ページサイズ)を計測

1. はSnow leopardでは動かず,Lionでは動く.バグなんだろうか・・・
2. 1.に関連するかもしれないがこれもうまくいかない...使用メモリが少ない場合は良さそうだが,4GBを超えたあたりから得られる値がおかしくなってる気がする.

同じように困っている人がいらっしゃる
http://d.hatena.ne.jp/ny23/20100617/p1
http://d.hatena.ne.jp/ny23/20100818/p2

プロセス情報から抜き出すのがよいのかと模索
http://www.python.jp/pipermail/python-ml-jp/2008-February/004246.html
http://www.dzeta.jp/~junjis/code_reading/index.php?ps%A4%F2%C6%C9%A4%E0

結局2つ目のリンクに掲載されているプログラムをコピペして使用することにした.
これで良いのか正直不安だが,いろいろ調べていて疲れた・・・・一応期待通り?な感じで計測出来ているのでこれを採用.また計算機実験をする時余力があれば,もっと理解を進めたいなと思う.