vc中程序运行时间的获取方法
来源:互联网 发布:易语言编程怎么样 编辑:程序博客网 时间:2024/06/18 06:12
通过使用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
0 0
- vc中程序运行时间的获取方法
- 获取VC/MFC程序的运行时间
- vc获取程序运行时间
- VC获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法
- VC获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法
- VC获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法
- VC获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法
- VC获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法
- VC获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法
- VC++ 获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法
- VC获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法
- VC++中计算程序的运行时间
- VC++中计算程序的运行时间
- VC获取系统时间、程序运行时间
- VC获取系统时间、程序运行时间
- VC获取系统时间、程序运行时间
- VC获取系统时间、程序运行时间
- VC获取系统时间、程序运行时间
- 插入排序法
- RegisterClassEx、CreateWindow、DefWindowProc
- java ftp上传时候可能出现的问题(新手专用)
- Spring-boot开发之DevTool工具
- Google Chrome 源码下载
- vc中程序运行时间的获取方法
- [Sencha ExtJs6 Modern] pullrefresh下拉刷新导致infinite list(无限滚动列表)滚动条不正常
- python requests FriedRing,无头的时候,默认头
- hdu2612——Find a way(BFS)
- 面向对象特征之多态
- 工作状态不满意
- 01背包整理
- 取石子(七) 南阳理工ACM 题目833
- Requirejs常用配置和应用