/*********************************************
* @brief 获取程序经过的处理器时间
* @return 程序经过的处理器时间
********************************************/
clock_t clock(void);
!subtitle:说明
获取程序从某一时刻开始大致经过的处理器时间。
将返回值除以 CLOCKS_PER_SEC 可以换算为秒。
开始时刻由实现定义,因此返回值本身无意义(但通常被近似当作程序启动后经过的处理器时间),只有两次返回值之差才有意义。
CLOCKS_PER_SEC是处理器的每秒时钟数,在 POSIX 上定义为 1000000 而非实际的时钟数。
!subtitle:参数
无
!subtitle:返回值
成功时返回程序经过的处理器时间
失败时返回 (clock_t)(-1)
#include <stdio.h>
#include <limits.h>
#include <time.h>
int main(void)
{
clock_t c1 = clock();
for(int i = 0; i < INT_MAX; i++);
clock_t c2 = clock();
int diff = (int)(c2 - c1);
printf("for 循环消耗了 %d 个处理器时钟,约合 %f 秒\n", diff, (double)diff / CLOCKS_PER_SEC);
return 0;
}
运行结果:
for 循环消耗了 4012699 个处理器时钟,约合 4.012699 秒
C17 standard (ISO/IEC 9899:2018):
7.27.2.1 The clock function (p: 285)
C11 standard (ISO/IEC 9899:2011):
7.27.2.1 The clock function (p: 389)
C99 standard (ISO/IEC 9899:1999):
7.23.2.1 The clock function (p: 339)
C89/C90 standard (ISO/IEC 9899:1990):
4.12.2.1 The clock function