[Unix] gettimeofday

5396 ワード

gettimeofday
#include <sys/time.h>
#include <unistd.h>

int gettimeofday(struct timeval *tv, struct timezone *tz);
gettimeofday()は、マイクロ秒単位の時間で返される.
第1のパラメータtvは、以下に示すように、システム時間を記憶するための構造体として定義される.
struct timeval
{
    long tv_sec;       // 초
    long tv_usec;      // 마이크로초
}
2番目のパラメータtzは、タイムゾーンを設定するために使用される.timezone構造体は現在使用されておらず、今後も支持されない.複雑に考慮する必要はありません.tzNULLを使用します.
成功した場合は0を返し、-1を返します.
#include <sys/time.h> // gettimeofday, struct time val
#include <unistd.h> // sleep
#include <stdio.h>
#include <string.h>

int main(void)
{
	struct timeval bgn, end;
	double one_sec = 1000000.0;

	double diff;
	gettimeofday(&bgn, NULL);
	sleep(1);
	gettimeofday(&end, NULL);
	diff = (end.tv_sec - bgn.tv_sec) + ((end.tv_usec - bgn.tv_usec) / one_sec);

	printf("%f\n", diff);

	return 0;
}
Linuxでは,clock()関数はcpu時間のみを測定するため,cpuが占有しない場合は測定を行わず,時間測定には使用できない.
References
  • https://www.joinc.co.kr/w/man/2/gettimeofday
  • https://velog.io/@springkim/c-linux-時間測定-gettimeofday