Qt测算程序运行时间
来源:互联网 发布:浮云网货 淘宝小号 编辑:程序博客网 时间:2024/04/28 02:22
转载自:http://blog.csdn.net/tandesir/article/details/7821698
【问题描述】程序运行时间是编程的一项重要指标,在QT中如何测算程序的运行时间呢?
【解析】
测试函数
- #include <math.h>
- void function()
- {
- unsigned int i,j;
- double y;
- for(i=0;i<1000;i++)
- for(j=0;j<1000;j++)
- y=sin((double)i);
- }
方法1 利用QTime,其精度为ms级
- #include <QDebug>
- #include <QTime>
- QTime time;
- time.start();
- function();
- qDebug()<<time.elapsed()/1000.0<<"s";
运行结果:0.109 s
方法2 利用gettimeofday(),其精度为us级
- #include <QDebug>
- #include <sys/time.h>
- struct timeval tpstart,tpend;
- float timeuse;
- gettimeofday(&tpstart,NULL);
- function();
- gettimeofday(&tpend,NULL);
- timeuse=(1000000*(tpend.tv_sec-tpstart.tv_sec) + tpend.tv_usec-tpstart.tv_usec)/1000000.0;
- qDebug()<<timeuse<<"s";
运行结果:0.109375 s
方法3 利用clock(),其精度为ms级
- #include <QDebug>
- #include <sys/time.h>
- double time_Start = (double)clock();
- function();
- double time_End = (double)clock();
- qDebug()<<(time_End - time_Start)/1000.0<<"s";
运行结果:0.11 s
方法4 利用windows.h(VC)函数,提精度为us级
- #include <QDebug>
- #include <windows.h>
- LARGE_INTEGER litmp;
- LONGLONG Qpart1,Qpart2,Useingtime;
- double dfMinus,dfFreq,dfTime;
- //获得CPU计时器的时钟频率
- QueryPerformanceFrequency(&litmp);//取得高精度运行计数器的频率f,单位是每秒多少次(n/s),
- dfFreq = (double)litmp.QuadPart;
- QueryPerformanceCounter(&litmp);//取得高精度运行计数器的数值
- Qpart1 = litmp.QuadPart; //开始计时
- function(); //待测试的计算函数等
- QueryPerformanceCounter(&litmp);//取得高精度运行计数器的数值
- Qpart2 = litmp.QuadPart; //终止计时
- dfMinus = (double)(Qpart2 - Qpart1);//计算计数器值
- dfTime = dfMinus / dfFreq;//获得对应时间,单位为秒,可以乘1000000精确到微秒级(us)
- Useingtime = dfTime*1000000;
- qDebug()<<dfTime<<"s";
运行结果:0.107415 s
【代码清单】
- #include <QDebug>
- #include <QTime>
- #include <sys/time.h>
- #include <windows.h>
- #include <math.h>
- void function();
- int main(void)
- {
- qDebug()<<"-------------------------------";
- //-1-
- QTime time;
- time.start();
- function();
- qDebug()<<time.elapsed()/1000.0<<"s";
- //-2-
- struct timeval tpstart,tpend;
- float timeuse;
- gettimeofday(&tpstart,NULL);
- function();
- gettimeofday(&tpend,NULL);
- timeuse=(1000000*(tpend.tv_sec-tpstart.tv_sec) + tpend.tv_usec-tpstart.tv_usec)/1000000.0;
- qDebug()<<timeuse<<"s";
- //-3-
- double time_Start = (double)clock();
- function();
- double time_End = (double)clock();
- qDebug()<<(time_End - time_Start)/1000.0<<"s";
- //-4-
- LARGE_INTEGER litmp;
- LONGLONG Qpart1,Qpart2,Useingtime;
- double dfMinus,dfFreq,dfTime;
- //获得CPU计时器的时钟频率
- QueryPerformanceFrequency(&litmp);//取得高精度运行计数器的频率f,单位是每秒多少次(n/s),
- dfFreq = (double)litmp.QuadPart;
- QueryPerformanceCounter(&litmp);//取得高精度运行计数器的数值
- Qpart1 = litmp.QuadPart; //开始计时
- function(); //待测试的计算函数等
- QueryPerformanceCounter(&litmp);//取得高精度运行计数器的数值
- Qpart2 = litmp.QuadPart; //终止计时
- dfMinus = (double)(Qpart2 - Qpart1);//计算计数器值
- dfTime = dfMinus / dfFreq;//获得对应时间,单位为秒,可以乘1000000精确到微秒级(us)
- Useingtime = dfTime*1000000;
- qDebug()<<dfTime<<"s";
- return 0;
- }
- void function()
- {
- unsigned int i,j;
- double y;
- for(i=0;i<1000;i++)
- for(j=0;j<1000;j++)
- y=sin((double)i);
- }
转载请标明出处,仅供学习交流,勿用于商业目的
Copyright @ http://blog.csdn.net/tandesir
0 0
- Qt测算程序运行时间
- Qt测算程序运行时间
- Qt测算程序运行时间
- Qt测算程序运行时间
- Qt测算程序运行时间
- Qt测算程序运行时间
- 【Qt】测算程序运行时间
- Qt测算程序运行时间
- 测算程序运行时间(转)
- c++学习笔记---测算程序运行时间
- time工具对程序运行时间进行测算
- QT 获取程序运行时间
- QT程序运行时间统计
- Qt简单编程--计算程序运行时间
- 使用QT在windows下高精度测试程序运行时间
- QT笔记(7)——Qt利用QTime计算程序运行时间
- 测量程序运行时间
- 计算程序运行时间
- C#使用剪贴板
- Spring 3.x MVC 入门4 -- @ResponseBody & @RequestBody &HttpMessageConverter
- C語言基本架構介紹
- 贪小利吃大亏 高翻新率智能手机大曝光
- 黑马程序员-我的第九篇学习日记:OC中的super的作用,多态和字符串的运用
- Qt测算程序运行时间
- Oracle 中union与order by的共用
- C语言新建文件,向文件中输入内容并读出文件内容
- 电脑误删文件恢复的方法
- I/O流操作
- SDRAM与SRAM的区别
- 新人报道
- Berkeley DB Java Edition相关资料
- Servlet到action的问题