Menu

Category

Archive

logo


time.h でのベンチマーク ~ difftime() と gmtime() [C]

2014-06-01 16:45:00 +0900
  • このエントリーをはてなブックマークに追加

今回は、time.h の difftime() と gmtime() を使用して、ベンチマークの取り方。

下記のコードで見れるように、gmtime() を使用した方が便利なことが多いです。基本的な time.h にある関数の使い方は、http://blog.kazuya.co/c/2014/06/01/time-func-1.html にて記事にしました。

 1 #include <stdio.h>
 2 #include <time.h>
 3 
 4 int main (void)
 5 {
 6     float ftime;
 7     time_t time1, time2, diff;
 8     struct tm *tptr;
 9     
10     time(&time1);
11     for (int i = 0; i < 1000000000; i++);
12     time(&time2);
13     diff = time2 - time1;
14     
15     // by gmtime
16     tptr = gmtime(&diff);
17     printf("1 billion for loops took %d seconds.\n", tptr->tm_sec);
18     
19     // by diffitme
20     ftime = difftime(time2, time1);
21     printf("1 billion for loops took %f seconds.\n", ftime);
22 }
23 
24 /* Output:
25     1 billion for loops took 2 seconds.
26     1 billion for loops took 2.000000 seconds.
27     Program ended with exit code: 0
28 */

difftime() は、秒数を直接返すので、長い時間を測るときには使いにくいです。それに対して、gmtime() は struct tm * を返すので柔軟に値を参照することができます。