関数の実行時間を出力したいと考えています。何らかの理由で、タイマーが常に 0 を返します。理由を教えてもらえますか?
double RunningTime(clock_t time1, clock_t time2)
{
double t=time1 - time2;
double time = (t*1000)/CLOCKS_PER_SEC;
return time;
}
int main()
{
clock_t start_time = clock();
// some code.....
clock_t end_time = clock();
std::cout << "Time elapsed: " << double(RunningTime(end_time, start_time)) << " ms";
return 0;
}
使用しようとしましたがgettimeofday
、それでも0が返されました。
double get_time()
{
struct timeval t;
gettimeofday(&t, NULL);
double d = t.tv_sec + (double) t.tv_usec/100000;
return d;
}
int main()
{
double time_start = get_time();
//Some code......
double time_end = get_time();
std::cout << time_end - time_start;
return 0;
}
また、使用chrono
してみましたが、あらゆる種類のビルドエラーが発生しました:
- エラー: #error このファイルには、今後の ISO C++ 標準である C++0x のコンパイラとライブラリのサポートが必要です。このサポートは現在
実験段階であり、-std=c++0x または -std=gnu++0x コンパイラ オプションで有効にする必要があります。 - 警告: 'auto' は C++0x では意味が変わります。削除してください
- エラー: ISO C++ は型のない 't1' の宣言を禁止します エラー: 'std::chrono' は宣言されていません
エラー: '(t2 - t1)' のメンバー 'count' の要求は、非クラス型 'int' です
int main() { auto t1 = std::chrono::high_resolution_clock::now();
//Some code...... auto t2 = std::chrono::high_resolution_clock::now(); std::cout << "Time elapsed: " << std::chrono::duration_cast<std::chrono::milliseconds>(t2-t1).count() << " milliseconds\n"; return 0; }