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
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 * を返すので柔軟に値を参照することができます。