C++ 记录程序运行时间的方法总结
来源:互联网 发布:js转圈的进度条效果 编辑:程序博客网 时间:2024/05/22 00:30
在学习过程中很重要的一个必会的小技巧:计算某一段代码的执行时间,可以用来分析代码的效率和算法的时间复杂度等等(个人主要是在总结各种排序算法时遇到的这个方法),下面给出两种常用的方式:
第一种:使用GetTickCount函数
#include<iostream>#include<windows.h>int main(){DWORD start_time=GetTickCount();{//此处为被测试代码}DWORD end_time=GetTickCount();cout<<"The run time is:"<<(end_time-start_time)<<"ms!"<<endl;//输出运行时间return 0;}
GetTickCount函数返回从系统运行到现在所经历的时间(类型为DWORD),单位为ms,因为DWORD表示范围的限制,所以使用此种方法存在限制,即系统的运行时间的ms表示不能超出DWORD的表示范围:也就是unsigned long,8个字节,4294967295。
第二种:使用clock()函数
#include<iostream>#include<time.h>int main(){clock_t start_time=clock();{//被测试代码}clock_t end_time=clock();cout<< "Running time is: "<<static_cast<double>(end_time-start_time)/CLOCKS_PER_SEC*1000<<"ms"<<endl;//输出运行时间return 0;}
clock_t,clock()定义于time.h中,clock()返回从程序运行时刻开始的时钟周期数,类型为long.CLOCKS_PER_SEC定义了每秒钟包含多少了时钟单元数,因为计算ms,所以需要*1000。
由上面分析可知,用clock()函数计算运行时间,表示范围一定大于GetTickCount()函数,所以,建议使用clock()函数。
第二种:高精度计时函数 ,以微秒为单位(1毫秒=1000微秒)
先看二个函数的定义
BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount);
得到高精度计时器的值(如果存在这样的计时器)。
BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);
返回硬件支持的高精度计数器的频率(次每秒),返回0表示失败。
再看看LARGE_INTEGER
它其实是一个联合体,可以得到__int64 QuadPart,也可以分别得到低32位DWORD LowPart和高32位的值LONG HighPart。
在使用时,先使用QueryPerformanceFrequency()得到计数器的频率,再计算二次调用QueryPerformanceCounter()所得的计时器值之差,用差去除以频率就得到精确的计时了。
头文件:直接使用#include <windows.h>就可以了。
#include <stdio.h> #include <windows.h> int main() { //用QueryPerformanceCounter()来计时 微秒 LARGE_INTEGER large_interger; double dff; __int64 c1, c2; QueryPerformanceFrequency(&large_interger); dff = large_interger.QuadPart; QueryPerformanceCounter(&large_interger); c1 = large_interger.QuadPart; Sleep(800); QueryPerformanceCounter(&large_interger); c2 = large_interger.QuadPart; printf("本机高精度计时器频率%lf\n", dff); printf("第一次计时器值%I64d 第二次计时器值%I64d 计时器差%I64d\n", c1, c2, c2 - c1); printf("计时%lf毫秒\n", (c2 - c1) * 1000 / dff); return 0; }
- C++ 记录程序运行时间的方法总结
- C++中两种常用的记录程序运行时间的方法的总结
- C++中两种常用的记录程序运行时间的方法的总结
- 题目:C++中两种常用的记录程序运行时间的方法的总结
- 记录程序的运行时间
- 记录程序运行的时间
- C/C++记录程序运行时间的类
- 记录程序运行时间的程序实例
- c语言计算程序运行时间的方法
- 【C++】C++中几种测试程序运行时间的方法
- 记录程序运行时间
- C++记录程序运行的时间
- 【C#】程序运行时间
- 宏 记录程序运行时间
- c++记录程序运行时间
- c++记录程序运行时间
- c++记录程序运行时间
- 记录程序运行时间代码
- spoj7258:Lexicographical Substring Search(后缀自动机+拓扑排序)
- Tomcat内部结构及深入性能调优
- Python批量判断IP地址所属地区
- JS和JQuery中如何获取和修改控件显示内容(如lable,div,h1)
- 【源码】H5-高仿jd
- C++ 记录程序运行时间的方法总结
- VewPager.setOnPagerChangListener失效
- 2017最新各大视频网站VIP解析播放,看优酷、腾讯、爱奇艺、...
- [Ubuntu]update-alternatives命令说明简介及用法
- Netstat 命令详解
- 腾讯应用-导购类源码
- 【javascript】call和apply的区别
- 2017 GPLT-大区赛-L1部分题解
- <<人工智能及其演化>>随手记录