测试函数运行时间

来源:互联网 发布:社交媒体网络安全问题 编辑:程序博客网 时间:2024/05/18 04:50
       如何知道函数运行需要多长时间呢?头文件ctime里面提供了一个函数:      clock_t clock();//# define long clock_t      该函数返回的是从程序开始运行到调用clock函数时所打的点数, 即clock tick(时钟打点);      有一个常数CLK_TCK,是机器时钟每秒所走的时钟打点数,是这样定义      的,//#define CLK_TCK  CLOCKS_PER_SEC     //# define CLOCKS_PER_SEC 1000     所以,定义两个clock的变量Begin,End;然后在要测试的函数前后分别调 用clock函数就可以得出时钟打点数,再除以CLK_TCK就得到时间了,代码如下:
  # include<iostream># include<ctime>using namespace std;clock_t  Begin, End;double duration;//typedef long clock_t# define N 10000void fun1(int);void fun2(int);int main(){    Begin = clock();//开始计时    //====================这里写要测试的代码===================    fun1(100);    //=========================================================    End = clock();//结束计时    duration = double(End - Begin)/CLK_TCK;//duration就是运行函数所打的    //点数,CLK_TCK是每秒所打点数    cout << "tick=" << double(End - Begin) << endl;    cout << "duration=" << duration  << endl;    return 0;}void fun1(int n)//普通输出{    for (int i = 0; i <= n; i++)        cout << i << endl;}void fun2(int n)//递归{    if (n)    {        fun2(n - 1);        cout << n << endl;    }    else cout << 0 << endl;}

这两个函数都是输出0到n,如图
这里写图片描述

这里写图片描述

 递归虽然时间复杂度较小,但是却是非常耗费空间的,因为它要一层一层展开,知道函数执行完毕,这是很恐怖的,比如N设为十万,百万,等等,这时系统空间不够用了,自然就会崩溃!

这里写图片描述
因为函数1占用空间非常小,所以虽然时间慢了点,但还是可以执行

这里写图片描述

看,这里直接就崩溃了

0 0
原创粉丝点击