C++中clock()函数可以帮助我们实现程序运行时间计算的功能
clock函数定义如下:
clock_t clock( void );
- clock_t只是一个预先用typedef取的类型别名,不要慌张
- CLOCKS_PER_SEC是一个预先的定义的常量,表示一秒钟会有多少个时钟计时单元
函数clock()返回从开启这个程序进程
到程序中调用clock()函数
之间的CPU时钟计时单元数
查看头文件time.h中的源码如下:
#ifndef _CLOCK_T_DEFINED
typedef long clock_t;
#define CLOCKS_PER_SEC ((clock_t)1000000)
#define _CLOCK_T_DEFINED
#endif
分别调用两次clock()就可以用公式计算这两次调用之间程序运行的时间了
clock_t start = clock();
clock_t finish = clock();
可以用公式(finish - start) /CLOCKS_PER_SEC
来计算一个进程自身的运行时间(单位是秒)
C++代码
#include <iostream>
#include <ctime>
using namespace std;
int main(void) {
clock_t start = clock(); // clock_t是long的别名(ctime中预定义的)
for (long long i = 1; i < 3e8; i ++) ;
clock_t finish = clock();
cout << "start: 已有 " << start << " 个CPU时钟计时单元数" << endl;
cout << "finish: 已有 " << finish << " 个CPU时钟计时单元数" << endl;
cout << "此机器每秒钟会有 " << CLOCKS_PER_SEC << " 个时钟计时单元" << endl << endl;
double cost_time = (double)(finish - start) / CLOCKS_PER_SEC;
printf("这部分程序的运行时间为:%.30f秒", cost_time);
return 0;
}
我的机器的输出
start: 已有 1364 个CPU时钟计时单元数
finish: 已有 755022 个CPU时钟计时单元数
此机器每秒钟会有 1000000 个时钟计时单元
这部分程序的运行时间为:0.753658000000000050100368298445秒