clock(3) プロセッサ時間の取得

書式

#include <time.h>


clock_t clock(void);

説明

clock() はプログラムの使用したプロセッサ時間の近似値を返す。

返り値

返り値は clock_t 単位での CPU 時間である。 秒単位での値を得るためには CLOCKS_PER_SEC で割ればよい。 使用したプロセッサ時間が得られない場合や、その値を表現できない場合、 この関数は (clock_t) -1 を返す。

準拠

C89, C99, POSIX.1-2001. POSIX は実際の精度にはよらず CLOCKS_PER_SEC が 1000000 であることを要求している。

注意

C の標準規格ではプログラムの開始の時点ではどんな値が返ってきても かまわない。 移植性を最大限確保するためには、プログラムの開始時に clock() を呼び出してその値を差し引くこと。

時刻は桁あふれする可能性がある点に注意すること。 CLOCKS_PER_SEC が 1000000 である 32 ビットシステムでは、 この関数は約 72 分毎に同じ値を返すことになる。

実装によっては、 clock() で返される値に wait(2) (あるいはその他の wait のような関数) で収集された 子プロセスの時間が含まれる場合もある。 Linux では、 clock() が返す値には wait された子プロセスの時間は含まれない。 times(2) 関数は呼び出し元とその子プロセスに関する情報を (別々に) 明示的に返すので、より好ましいだろう。

glibc 2.17 以前では、 clock() は times(2) を使って実装されていた。 glibc 2.18 以降では、 精度を向上させるため、 clock_gettime(2) (の CLOCK_PROCESS_CPUTIME_ID クロック) を使って実装されている。

この文書について

この man ページは Linux man-pages プロジェクトのリリース 3.65 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。