clock -
プロセッサ時間の取得
#include <time.h>
clock_t clock(void);
clock()
はプログラムの使用したプロセッサ時間の近似値を返す。
返り値は
clock_t 単位での
CPU 時間である。
秒単位での値を得るためには
CLOCKS_PER_SEC で割ればよい。
使用したプロセッサ時間が得られない場合や、その値を表現できない場合、
この関数は
(clock_t) -1
を返す。
この節で使用されている用語の説明については、
attributes(7) を参照。
インターフェース |
属性 |
値 |
clock() |
Thread safety |
MT-Safe |
POSIX.1-2001, POSIX.1-2008, C89, C99. XSI
は実際の精度にはよらず
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
クロック)
を使って実装されている。
clock_gettime(2),
getrusage(2),
times(2)
この man ページは Linux
man-pages
プロジェクトのリリース
5.10
の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/
に書かれている。