时间就是金钱,效率就是生命!程序的好坏一定程度上取决于它的执行效率。

这是我在网上找到的一个通过函数测试函数执行时间的方法,这个应该是比较原始的,可能编译器也有这个功能了。但是深入去理解一些东西还是好的,我觉得这也是我要努力的方向。

demo

1
2
clock():捕捉从程序开始运行到clock()被调用时所耗费的时间。这个时间单位是clock tick,即“时钟打点”。
常数CLK_TCK:机器时钟每秒所走的时钟打点数。

程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <time.h>

using namespace std;

clock_t start, stop;//clock_t是clock()函数返回的变量类型
double duration;//记录函数运行时间,以秒为单位

void PrintN(int N) {
//不在测试范围内的准备工作写在clock()调用之前
void PrintN(int N) {
if (N) {
PrintN(N - 1);
cout << N << endl;
}
return;
}

int main() {
int N;
cin >> N;

start = clock();
PrintN(N);
stop = clock();
duration = ((double)(stop - start)) / CLK_TCK;
cout << duration << endl;

/*其他不在测试范围的处理写在后面,例如输出duration*/
return 0;
}

这是一个递归程序,经测试递归程序略慢于普通的循环,而且当N大于等于100000时递归程序崩溃了,栈溢出了。

因此尽管递归有它的优点,但选择递归时要慎重。

评论