卒業研究の一環でプログラムを複数作成しました。
研究結果としてプログラムの実行時間、メモリ使用量を出し、比較をしたいと考えています。
ちなみにOSはFreeBSD(もしくはLinux)で、c言語のプログラムです。
プログラムの実行時間はUNIXのtimeコマンドにより導き出すことができますが、プログラムの最大メモリ使用量を導き出す方法はあるのでしょうか?
インターネットなどで調べてみたのですが、それらしいコマンドは見つかりませんでした。
もしあるのであれば教えていただけると幸いです。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
実行中 ps で見るのは?
回答ありがとうございます。
psコマンドですか…。
そのためにはプログラムを一旦停止する必要があったのでまだ試していませんでした。
mallocで動的にメモリを確保していたので、最大使用量を調べるためには最大になるであろう所にscanfなんかを入れてpsコマンドで調べるしかないですかね?
ほんとは自動で最大メモリ使用量を調べたかったのですが、この方法でやってみようかと思います。
No.1
- 回答日時:
こんばんは.
Linuxを利用する,と言うことであれば
#include <sys/time.h>
#include <sys/resource.h>
とした上で,getrusage()
という関数を使えば良いと思います.
また,同じ関数をプログラムの最初と最後で利用することで,
実行時間を計ることもできます.
詳しくはコマンドプロンプトで
man getrusage
としてください.
timeコマンドを使ってはいけないのは,一般のマルチタスクOSでは,
負荷の状態によってプログラムが終了するまでの時間にばらつきが生じるためです.
getrusageは「そのプログラムが使ったユーザー時間」を計れますので,
timeコマンドより精度が良いです.
回答ありがとうございます。
getrusageがあったとは初めて知りました。
manで調べてみたのですが、う~ん…難しいですね(泣
まだメモリ使用量の出し方が理解できません。
いくつかのプログラムに記述してprintfしてみましたが、すべて同じ値を返されてしまいました。
↓
ru_ixrss = 1663872
ru_idrss = 1666208
ru_ru_isrss = 1665344
ru_ru_minflt = 1207648
ru_ru_majflt = 1656240
ru_ru_nswap = 0
ru_ru_inblock = 0
ru_ru_oublock = 895
ru_ru_msgsnd = 64
ru_ru_msgrcv = 34
ru_ru_nsignals = 0
ru_ru_nvcsw = 0
ru_ru_nivcsw = 0
どれを見ればよいのやら(汗
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- C言語・C++・C# C言語 3 2022/10/04 15:07
- システム CPUの問題について 2 2022/07/09 12:04
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、写真のプログラムをどう直せ 2 2022/07/09 21:13
- Outlook(アウトルック) outlook メモリ不足 1 2022/05/31 10:16
- その他(プログラミング・Web制作) プログラムが書けません。 6 2023/01/22 22:58
- ノートパソコン Windows 10 動作改善方法 6 2023/04/26 22:30
- その他(プログラミング・Web制作) 機械語に詳しい方 2 2022/07/10 12:06
- C言語・C++・C# 1. 仮想CPU「exmini」を使用して,「$dataからn減算する」プログラムを作成してください 2 2022/07/04 17:49
- C言語・C++・C# C++で割り算の結果を昇順に出力するプログラムを作りたいのですが、例えば(double)100000 3 2022/07/15 17:46
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
C言語で途中までしか、プログラ...
-
プログラミング ソースコード
-
sendkeysにてALT+CTRL+INSERTを...
-
vba GetAsyncKeyState関数について
-
このプログラミングの問題を教...
-
プリントスクリーンをプログラ...
-
並列計算をしたときのシステム...
-
VB上で実行中の無限ループの止め方
-
実行時エラー429
-
マウスの軌跡/クリックを記憶し...
-
UNIXで自作プログラムのメモリ...
-
【C言語プログラミング】 time(...
-
他の実行ファイルを実行するプ...
-
C++コンソールプログラムをBuil...
-
あるプログラム実行中に別のプ...
-
MACアドレスの調べ方
-
プログラムの一時停止
-
fortranで計算を実行するとrunt...
-
C言語でヘキサダンプのプログラ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
プログラミング ソースコード
-
MACで動く実行ファイルをWindow...
-
なんかC言語でプログラム書いて...
-
sendkeysにてALT+CTRL+INSERTを...
-
他のPC上にあるexeを、そのP...
-
C言語で途中までしか、プログラ...
-
システム資源とは?
-
終了してもプログラムが実行し...
-
VBAで外部プログラムを非表示で...
-
VB上で実行中の無限ループの止め方
-
実行時エラー429
-
RPG パラメーターについて
-
C言語でフォルダを開く
-
プリントスクリーンをプログラ...
-
system関数を使用してsuコマン...
-
並列計算をしたときのシステム...
-
clock関数は正確じゃないの?
-
プログラムを走らせる
-
このプログラミングの問題を教...
おすすめ情報