我是靠谱客的博主 魁梧自行车,最近开发中收集的这篇文章主要介绍vc中程序运行时间的获取方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

        通过使用vc中Windows.h头文件里的GetTickCount()函数,我们可以较为准确的估算出目标程序片段运行所需要的时间(ms)。

        GetTickcount函数原型:DWORD GetTickCount(void);

        这里我们以求解Fibonacci数列的两种算法(递归算法和迭代算法)效率对比为例进行说明:


#include <iostream>
#include <Windows.h>
using namespace std;
long long Fibonacci_Recursive(int n);
//求解Fibonacci数列的递归算法
long long Fibonacci_Iterative(int n);
//求解Fibonacci数列的迭代算法
int main(){
while (1){
int n;
cout << "请输入n: ";
cin >> n;
long long t3 = GetTickCount();
//精度到ms级;可以用GetTickCount64()代替,区别详见定义;
long long result2 = Fibonacci_Iterative(n);
long long t4 = GetTickCount();
long long rt2 = t4 - t3;
cout << "Fibonacci_Iterative程序结果为: " << result2 << endl;
cout << "Fibonacci_Iterative程序运行时间为: " << rt2 << endl;
long long t1 = GetTickCount();
long long result = Fibonacci_Recursive(n);
long long t2 = GetTickCount();
long long rt = t2 - t1;
cout << "Fibonacci_Recursive程序结果为: " << result << endl;
cout << "Fibonacci_Recursive程序运行时间为: " << rt << endl;
}
return 0;
}
long long Fibonacci_Recursive(int n){
//求解Fibonacci数列的递归算法
if (n == 0)
return 0;
else if (n == 1)
return 1;
else return (Fibonacci_Recursive(n - 1) + Fibonacci_Recursive(n - 2));
}
long long Fibonacci_Iterative(int n){
//求解Fibonacci数列的迭代算法
int result[2] = { 0, 1 };
if (n < 2)
return result[n];
long long fibNMinus1 = 1, fibNMinus2 = 0, fibN = 0;
int i = 2;
while (i <= n){
fibN = fibNMinus1 + fibNMinus2;
fibNMinus2 = fibNMinus1;
fibNMinus1 = fibN;
++i;
}
return fibN;
}


       运行后结果如下图所示



      

       可见两者在较小n值(0<=n<=25)时程序运行时间无明显差异,但当n进一步增大时,程序运行时间就有着显著的差异,从而说明用于求解Fibonacci数列的递归算法的效率低下,原因是里面含有多次重复运算。

       需要注意的是GetTickCount()函数并非实时发送,而是由系统约每18ms发送一次,因此其最小精度约为18ms。


       有关于vc中系统时间以及程序运行时间相关方法的具体说明,可以参考此博客:

[喝小酒的网摘]  http://blog.hehehehehe.cn/a/16370.htm

最后

以上就是魁梧自行车为你收集整理的vc中程序运行时间的获取方法的全部内容,希望文章能够帮你解决vc中程序运行时间的获取方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(72)

评论列表共有 0 条评论

立即
投稿
返回
顶部