0

コード内の関数の実行をカウントしようとしています (1 時間以上かかります)。clock() を使用していますが、計算された時間が負であるため、いくつかのエラーが発生します。私はこのようにやっています:

long double time;
clock_t start, t_end;

t_start = clock();
algorithm->execute();
t_end = clock();

time = ((long double) t_end - t_start) / CLOCKS_PER_SEC;

cout << time << endl;

私は何か間違ったことをしていますか?

4

3 に答える 3

2

CLOCKS_PER_SEC は 1000000 で、clock() は符号付きの 32 ビット値を返すため、約 36 分後に負になり、約 72 分後にラップします。

長い実行時間を測定する方法の詳細については、http://www.guyrutenberg.com/2007/09/22/profiling-code-using-clock_gettimeを参照してください。

于 2010-06-19T21:00:40.367 に答える
1

clock()どちらの呼び出しも-1 を返さないことを確認しましたか?

clock() 関数は、プログラムが開始されてからのプロセッサー時間を返すか、その情報が利用できない場合は -1 を返します。

これを行う別のアプローチは次のとおりです。

#include <time.h>

time_t start, end;
time(&start);
algorithm->execute();
time(&end);
double diff = difftime(end, start);
于 2010-06-19T20:59:59.243 に答える
0

100% 確信はありませんが、t_end だけを long double にキャストしますか ???

そうではありませんか:

((long double)t_end - (long double)t_start)/CLOCKS_PER_SEC

また

((long double)(t_end - t_start))/CLOCKS_PER_SEC

???

于 2010-06-19T21:00:34.767 に答える