QT 计算时间

本文转自于:http://www.cnblogs.com/flyinggod/p/8721291.html

一、标准C和C++都可用

1. 获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t timer0 )。 精确到秒

1

2

3

4

5

6

7

8

9

10

11

12

13

#include <time.h> 

#include <stdio.h> 

int main() 

    time_t start ,end ; 

    double cost; 

    time(&start); 

    sleep(1); 

    time(&end); 

    cost=difftime(end,start); 

    printf("%f/n",cost); 

    return 0; 

关于代码中的sleep函数,需要注意的是:

    1)在windows下,为Sleep函数,且包含windows.h

    2)关于sleep中的数,在Windows和Linux下1000代表的含义并不相同,Windows下的表示1000毫秒,也就是1秒钟;Linux下表示1000秒,Linux下使用毫秒级别的函数可以使用usleep。

2、clock_t clock(),clock函数获取的是计算机启动后的时间间隔,得到的是CPU时间,精确到1/CLOCKS_PER_SEC秒。

1

2

3

4

5

6

7

8

9

10

11

12

#include <time.h> 

#include <stdio.h> 

int main() 

    double start,end,cost; 

    start=clock(); 

    sleep(1); 

    end=clock(); 

    cost=end-start; 

    printf("%f/n",cost); 

    return 0; 

}

注意与CPU振荡周期有关,所以不同CPU精度可能不一样。

3. 利用QTime,其精度为ms级  

1

2

3

4

5

6

7

8

9

#include <QDebug> 

#include <QTime> 

   

QTime time

   

time.start(); 

function(); 

   

qDebug()<<time.elapsed()/1000.0<<"s"

4.  Linux利用clock(),其精度为ms级

1

2

3

4

5

6

7

8

#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";

5. 利用windows.h函数,提精度为us级

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

#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"

6. 利用gettimeofday(),其精度为us级

1

2

3

4

5

6

7

8

9

10

11

12

#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"

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值