求程序运行时间的函数clock()以及 CLOCKS_PER_SEC与CLK_TCK的区别,用法

最近学习算法和数据结构
涉及到一个时间问题
要看程序运行所需的时间。
所以要用clock()函数

time.h的头文件
但是这个函数,单位不是s,咱的时间是s
所以要除以个CLOCKS_PER_SEC
这个表示一秒钟内CPU运行的时钟周期数(时钟计时单元)
百度百科是这么说的
在这里插入图片描述
这两个有什么区别
最新VS2019的说法
在这里插入图片描述

我们用的时候只需要,会用就行
下面是是例子:

#include
#include 
using namespace std;

int main(){
const int MOD=1000000;
int n,s=0;
cin>>n;
int f=1;
for(int i=1;i<=n;i++){

	for(int j=1;j<=i;j++){
		f=(f*j)%MOD;
	
	}	s=(s+f)%MOD;	f=1;
}
cout<<s<<endl; 
cout<<(double)clock()/CLOCKS_PER_SEC<<endl;2 
return 0;
}


如果要看程序运行时间要在命令行里运行可执行程序,否则这个时间会算上你的输入时间

在命令行中输入echo 20|(可执行文件的路径)

在这里插入图片描述
你也可以定义两个变量标志,来计算部分程序的所用时间
这次记录在输出结果之前的时间

#include
#include 
using namespace std;
clock_t start ,stop;
//clock_t是clock()函数返回的变量类型

int main(){
	start=clock();//开始计时
const int MOD=1000000;
int n,s=0;
cin>>n;
int f=1;
for(int i=1;i<=n;i++){

	for(int j=1;j<=i;j++){
		f=(f*j)%MOD;
	
	}	s=(s+f)%MOD;	f=1;
}
stop=clock();//停止计时
cout<<s<<endl; 
cout<<(double)(stop-start)/CLOCKS_PER_SEC<<endl;
return 0;
}


在这里插入图片描述

你可能感兴趣的:(C++,算法竞赛入门经典,第二版,数据结构)