今回は、time.h の difftime() と gmtime() を使用して、ベンチマークの取り方。
下記のコードで見れるように、gmtime() を使用した方が便利なことが多いです。基本的な time.h にある関数の使い方は、http://blog.kazuya.co/c/2014/06/01/time-func-1.html にて記事にしました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #include <stdio.h> #include <time.h> int main (void) { float ftime; time_t time1, time2, diff; struct tm *tptr; time(&time1); for (int i = 0; i < 1000000000; i++); time(&time2); diff = time2 - time1; // by gmtime tptr = gmtime(&diff); printf("1 billion for loops took %d seconds.\n", tptr->tm_sec); // by diffitme ftime = difftime(time2, time1); printf("1 billion for loops took %f seconds.\n", ftime); } /* Output: 1 billion for loops took 2 seconds. 1 billion for loops took 2.000000 seconds. Program ended with exit code: 0 */ |
difftime() は、秒数を直接返すので、長い時間を測るときには使いにくいです。それに対して、gmtime() は struct tm * を返すので柔軟に値を参照することができます。