名 前
clock − プ ロ セ ッ サ 時 間 の 取 得
書 式
#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 ク ロ ッ ク ) を 使 っ て 実 装 さ れ て い る 。
関 連 項 目
clock_gettime(2), getrusage(2), times(2)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。