1、C++程序运行时间计算
C 标准库提供了头文件time.h 用于获取时间,即Window和linux都可以用。
一个程序的CPU执行时间 = 一个程序的CPU时钟周期数 × 时钟周期时间
= 一个程序的CPU时钟周期数 ÷ 时钟频率
注:CPU的主频就是时钟频率。
1.1 CLOCK()
C语言中,clock()函数返回进程CPU运行的时钟周期计数,单位:ms。CLOCKS_PER_SEC是标准c的time.h头函数中宏定义的一个常数,表示一秒钟内CPU运行的时钟周期数(时钟频率)。
所以,程序运行时间==Δclock()/*CLOCKS_PER_SEC(ms)。
clock()是进程使用的cpu时间,属于处理器时间节拍,精度ms级(一般精度10ms),并行程序中统计时间会存在严重错误。
1.2 time()
- time(NULL)是指返回从1970年1.1日(元旦)午夜0点到现在的秒数,属于实际时间,单位:s。精度秒(s)级;
程序运行时间计算程序
#include<iostream>
#include<iomanip> //cout输出精度控制需要,fixed、setpercison()
#include<time.h> //获取时钟周期数需要
using namespace std;
int main(void) {
//计算方式一,CLOCK(),精度ms,10ms左右,提示:并行程序会出错
long test ;
clock_t start, finish; // clock_t为时钟计时单元数
start = clock(); // clock()返回此时CPU时钟计时单元数
//测试代码段
for (long i = 1; i <= 1000000000; i++) {
test = i;
}
finish = clock();
cout << "代码运行花费时间为:" << fixed << setprecision(8)//控制时间输出精度8位,右侧自动补0。
<< double(finish - start) / CLOCKS_PER_SEC << "ms"<< endl; //时间计算过程
//计算方式二,time(),精度s
time_t timeBegin, timeEnd;
timeBegin = time(NULL);
//测试代码段
for (long i = 1; i <= 1000000000; i++) {
test = i;
}
finish = clock();
timeEnd = time(NULL);
cout << "代码运行花费时间为:"
<< timeEnd - timeBegin << "ms"<< endl; //时间计算过程
return 0;
}
程序运行结果:
代码运行花费时间为:2.87300000ms
代码运行花费时间为:2ms