こんにちは、もがちゃんです。
今回は、C言語で処理時間を計測する際に使用するclockの使い方を簡単なサンプルプログラムとともに説明します。
目次
clockの構文
#include <time.h>
clock_t clock(void);
clockの説明
clockは、プログラム開始から使用したプロセッサ時間を返します。
clock関数は、使用したプロセッサ時間を決定する。
JISX3010 プログラム言語C
返却値
プロセッサ時間の取得が
成功した場合は、プロセッサ時間を返します。
失敗した場合は、-1を返します。
clock関数は、そのプログラムの実行にだけ関連した処理系定義の時点からそのプログラムで使用したプロセッサ時間を、処理系の最良の近似で返す。秒単位の時間を決定するためには、clock関数の返却値をマクロCLOCK_SPER_SECの値で割ればよい。使用したプロセッサ時間が得られないか、又はその値が表現できない場合、値(clock_t)(-1)を返す。
JISX3010 プログラム言語C
clockの使い方サンプル
clockを使用してプログラム実行に要した時間を表示する簡単なプログラムを紹介します。
サンプルプログラムとその実行結果
#include <stdio.h>
#include <time.h>
int main(void) {
fprintf(stdout, "program start!\n");
char buffer[256];
/* 時間稼ぎのためのループ */
for (long l = 1; l <= 1000000; l++) {
sprintf(buffer, "loop [%07ld]", l);
}
fprintf(stdout, "%s\n", buffer);
// ここまでのプロセッサ時間を取得して出力する
clock_t t = clock();
fprintf(stdout, "プロセッサ時間:[%ld],秒数:[%f]\n"
, (long) t, (double) t / CLOCKS_PER_SEC);
}
clockの使い方まとめ
- clockはプログラム開始からのプロセッサ時間を返す。
- プロセッサ時間から秒数に変換するには、取得したプロセッサ時間をCLOCKS_PER_SECで割れば良い。
- プログラムの部分的な処理時間を計測したい場合は、計測したい部分の前後でclockを使用してプロセッサ時間を取得し、その差を求めれば良い。