Ubuntu12.04でのCPU時間の測定について質問があります。
ループの停止基準としてCPU時間を使用したいと思います。最善の方法は何ですか?
while(....)
{
//main part
// get CPUTIME
if(CPUTIME>= Given_Time)
{
break;
}
}
1)clock()
時間の解像度をあまり気にしないのであれば、使用できます。
time_t begin=clock();
....
time_t end=clock();
CPUTIME=(double)(end-begin)/(double)(CLOCKS_PER_SEC);
ただし、time_t
実行時間が長くなる可能性があるため(1時間以上)、多くの場合オーバーフローします。この問題を解決するにはどうすればよいですか?
2)2番目のオプションは使用getrusage(int who, struct rusage *usage)
していますループでこの関数を呼び出すのにコストがかかりすぎますか?
3)3番目のオプションは使用することですint clock_gettime(clockid_t clk_id, struct timespect *tp)
これまでのところ、これは私のオプションの最良の選択です。
どんな提案やコメントも役に立ちます。