我们首先直接给出示例代码,然后再来解释为什么:
#include <iostream> #include <time.h> using namespace std; int main() { for(int counter = 0; counter < 50000; counter++) { cout<<'.';//会打印出一大堆‘.’ } double end = clock()/CLOCKS_PER_SEC;//计算到目前为止程序运行了多长时间 cout<<"\n\truntime "<< end; return 0; }运行结果:
解释原因: 可以发现,示例程序非常简单。首先你要包含time.h这个头文件,因为计算时间就是要用它里面的函数。程序一开始,是一个循环,打印出5000个点。这里打印这么多点,看着确实不美观,但是,如果你写一个空循环,或者循环体执行一些简单计算的话,就很容易在编译的时候被优化掉。而我们的程序运行计时单位是秒,一优化,这么短的程序运行时间肯定不会超过1秒,所以丑是丑了点,但还是有道理的。然后最关键的还是double end = clock()/CLOCKS_PER_SEC;这句了。clock()是time.h中的的计时函数,简单而言,就是该程序从启动到clock()函数调用占用CPU的时钟计时单元(clock tick)数。而CLOCKS_PER_SEC是time.h宏定义的一个常数,表示一秒钟内CPU运行的时钟计时单元数量。所以两个数值相除,自然而然就是程序占用cpu的秒数。也就是程序运行时间。这个就不用解释了,与上面程序的区别就是,多了一个start,然后最后end-start,当然就是程序从start到end所使用的时间喽。
