###前提・実現したいこと
openmpを用いた際、for文内の各関数の処理時間(CPU時間)を計測したい。
###発生している問題
時間計測に関することは初心者であり、以下のコードでCPU時間が本当に正しく計測できているのかがわからない。
また、正しい数値が得られているかを確認する方法がわからない。
###該当のソースコード
C++
1#include <time.h> 2#pragma omp parallel for reduction 3for (size_t x = 0; x < pathes.size(); ++x) { 4 struct tp1, tp2; 5 const auto& p = pathes[x]; 6 cv::Mat image = cv::imread(p.string()); 7 ////// 8 clock_gettime(CLOCK_THREAD_CPUTIME_ID, &tp1) 9 func1(image); 10 clock_gettime(CLOCK_THREAD_CPUTIME_ID, &tp2) 11 long sec1 = tp2.tv_sec - tp1.tv_sec; 12 long nsec1 = tp2.tv_nsec - tp1.tv_nsec; 13 if (nsec1 < 0){ 14 sec1--; 15 nsec1 += 1000000000L; 16 } 17 //////関数2 18 clock_gettime(CLOCK_THREAD_CPUTIME_ID, &tp1) 19 func2(image); 20 clock_gettime(CLOCK_THREAD_CPUTIME_ID, &tp2) 21 long sec2 = tp2.tv_sec - tp1.tv_sec; 22 long nsec2 = tp2.tv_nsec - tp1.tv_nsec; 23 if (nsec2 < 0){ 24 sec2--; 25 nsec2 += 1000000000L; 26 } 27 ofstream ofs_res(fs::path(path).stem().string() + "_result1.txt"); 28 ofs_res << "func1\t" << (double)sec1 + (double)nsec1 / 1.0e9 << "sec" << endl; 29 ofs_res << "func2\t\t" << (double)sec2 + (double)nsec2 / 1.0e9 << "sec" << endl; 30 31 32}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/07 06:45