最小単位が1秒の精度で良い場合は time()
関数を利用する。
time()
関数は以下の書式で利用する。
#include <time.h>
time_t x;
x = time(NULL);
時刻を表す型は、time_t
型であり、1970年1月1日
0時0分0秒からの秒数を持っている。2つの処理にかかった秒数を計りたいときは
たとえば以下のようにする。
time_t start, end;
start = time(NULL);
:
:(なんらかの処理)
end = time(NULL);
printf("%d秒かかりました\n", end-start);
gettimeofday()
関数を利用すると、マイクロ秒単位で計時できる。
この間数の使用には
#include <sys/time.h>
が必要で、なおかつ、引数として struct timeval
型の変数への
ポインタと、struct timezone
型の変数へのポインタが必要とな
る。
int gettimeofday(struct timeval *tp, void *);
struct timeval
型の変数に1970年からの秒数と、1秒きっか
りからのマイクロ秒が入る。struct timeval
構造体は、
struct timeval {
long tv_sec;
long tv_usec;
};
のように定義されている。2つの処理の間にかかった秒数をマイクロ秒単位で 求めるには、以下のようにする。
#include <sys/time.h>
int main()
{
struct timeval t1, t2;
struct timezone dummy;
float elapse;
gettimeofday(&t1, &dummy);
:
:(なんらかの処理)
gettimeofday(&t2, &dummy);
elapse = (t2.tv_sec - t1.tv_sec)
+ (float)(t2.tv_usec - t1.tv_usec)/1000000;
printf("%f秒経過\n", elapse);
}
gettimeofday()
関数に与える第2引数は特に使用しないので
ダミーの変数を確保して、そのアドレスを渡せばよい。