C++ 、Qt计算时间的方法
原文链接:https://blog.csdn.net/chy555chy/article/details/53405072
Qt计算时间的两种方法:
- QTime elapsed() : ms
- QTime currentTime() : ms
C++计算时间的五种方法:
- clock() : ms
- GetTickCount() : ms
- gettimeofday(time_val*, NULL) : us
- QueryPerformanceFrequency(LARGE_INTEGER*) & QueryPerformanceCounter(LARGE_INTEGER*) : us
- time(NULL) : s
#include <QThread>
#include <QTime>
#include <sys/time.h> //clock, gettimeofday, time
#include <windows.h> //Sleep, GetTickCount, timeGetTime, QueryPerformanceCounter
#include <QDebug> //#pragma comment(lib, "winmm.lib") //timeGetTime, 但是这个库Windows或Qt或VS2015都没有自带 const unsigned long SLEEP_TIME_MILL = 1000; /**
* QTime的精度为ms级
*/
void calcByQtimeElapsed() {
QTime time;
time.start();
QThread::msleep(SLEEP_TIME_MILL);
int timeElapsed = time.elapsed();
qDebug()<<"QTime.start & QTime.elspsed ="<<timeElapsed<<"ms";
} /**
* QTime的精度为ms级
*/
void calcByQtimeCurrentTime() {
QTime startTime = QTime::currentTime();
QThread::msleep(SLEEP_TIME_MILL);
QTime stopTime = QTime::currentTime();
int elapsed = startTime.msecsTo(stopTime);
qDebug()<<"QTime.currentTime ="<<elapsed<<"ms";
} /**
* clock的精度为ms级
*/
void calcByClock() {
clock_t startTime = clock();
Sleep(SLEEP_TIME_MILL);
clock_t endTime = clock();
clock_t elapsed = endTime - startTime;
qDebug()<<"clock ="<<elapsed<<"ms";
} /**
* GetTickCount的精度为ms级
*/
void calcByTickCount() {
//返回自开机以来经历的毫秒数
DWORD startTime = GetTickCount();
Sleep(SLEEP_TIME_MILL);
DWORD stopTime = GetTickCount();
DWORD elapsed = stopTime - startTime;
qDebug()<<"GetTickCount = "<<elapsed<<"ms";
} ///**
// * timeGetTime的精度为ms级
// * 必须添加Winmm.lib, 否则编译报错undefined reference
// */
//void calcByTimeGetTime() {
// //返回自开机以来经历的毫秒数
// DWORD startTime = timeGetTime();
// Sleep(SLEEP_TIME_MILL);
// DWORD stopTime = timeGetTime();
// DWORD elapsed = stopTime - startTime;
// qDebug()<<"timeGetTime = "<<elapsed<<"ms";
//} /**
* gettimeofday的精度为us级
*/
void calcByGetTimeOfDay() {
struct timeval startTime, stopTime;
gettimeofday(&startTime, NULL);
Sleep(SLEEP_TIME_MILL);
gettimeofday(&stopTime, NULL);
long elapsed = (stopTime.tv_sec-startTime.tv_sec) * 1000000 + (stopTime.tv_usec - startTime.tv_usec);
qDebug()<<"gettimeofday ="<<elapsed<<"us";
} /**
* QueryPerformanceCounter的精度为us级
*/
void calcByQueryPerformanceCounter() {
LARGE_INTEGER frequency, startCount, stopCount;
WINBOOL ret;
//返回性能计数器每秒滴答的个数
ret = QueryPerformanceFrequency(&frequency);
if(ret) {
ret = QueryPerformanceCounter(&startCount);
}
Sleep(SLEEP_TIME_MILL);
if(ret) {
QueryPerformanceCounter(&stopCount);
}
if(ret) {
LONGLONG elapsed = (stopCount.QuadPart - startCount.QuadPart) * 1000000 / frequency.QuadPart;
qDebug()<<"QueryPerformanceFrequency & QueryPerformanceCounter ="<<elapsed<<"us";
}
} /**
* time(NULL)精确度为s级
*/
void calcByTime() {
time_t startTime = time(NULL);
Sleep(SLEEP_TIME_MILL);
time_t stopTime = time(NULL);
long elapsed = stopTime - startTime;
qDebug()<<"time(NULL) ="<<elapsed<<"s";
} int main(int argc, char *argv[])
{
calcByQtimeElapsed();
calcByQtimeCurrentTime();
calcByClock();
calcByTickCount();
// calcByTimeGetTime();
calcByGetTimeOfDay();
calcByQueryPerformanceCounter();
calcByTime();
system("pause");
return 0;
}
C++ 、Qt计算时间的方法的更多相关文章
- 关于在Qt里让程序休眠一段时间的方法总结
出处:http://hanzhaoxin.cnblogs.com/ Qt 为何没有提供 Sleep 论坛上不时见到有人问: Qt 为什么没有提供跨平台的 sleep 函数? 使用平台相关的 Sleep ...
- python操作日期和时间的方法
不管何时何地,只要我们编程时遇到了跟时间有关的问题,都要想到 datetime 和 time 标准库模块,今天我们就用它内部的方法,详解python操作日期和时间的方法.1.将字符串的时间转换为时间戳 ...
- java中获取日期和时间的方法总结
1.获取当前时间,和某个时间进行比较.此时主要拿long型的时间值. 方法如下: 要使用 java.util.Date .获取当前时间的代码如下 Date date = new Date(); da ...
- 解析Qt中QThread使用方法
本文讲述的是在Qt中QThread使用方法,QThread似乎是很难的一个东西,特别是信号和槽,有非常多的人(尽管使用者本人往往不知道)在用不恰当(甚至错误)的方式在使用QThread,随便用goog ...
- js(jQuery)获取时间的方法及常用时间类搜集
获取时间的方法及常用时间类都是大家经常使用的,在本文为大家整理了一些,个人感觉还比较全,感兴趣的朋友可以收集下 复制代码代码如下: $(function(){ var mydate = new D ...
- Fedora安装qt总结四种方法
在fedora上安装qt有四种方法,本人由于初次接触fedora,所以还是耐心的把三个方法都测试了一遍. 1. 下载源码,手动编译,选择路径安装,请参考<fedora15下搭建QT开发环境及编 ...
- Qt中事件处理的方法(三种处理方法,四种覆盖event函数,notify函数,event过滤,事件处理器。然后继续传递给父窗口。可观察QWidget::event的源码,它是虚拟保护函数,可改写)
一.Qt中事件处理的方式 1.事件处理模式一 首先是事件源产生事件,最后是事件处理器对这些事件进行处理.然而也许大家会问, Qt中有这么多类的事件,我们怎么样比较简便的处理每个事件呢?设想,如果是 ...
- 计算时间:一个C++运算符重载示例
Time类是一个用于计算时间的类,其原型如下:程序清单11.1 mytime0.h // mytime0.h -- Time class before operator overloading #if ...
- time函数计算时间
学过C语言的都知道有个time函数可以计算时间, 也好像知道time(NULL)返回的是一个距离1970年1月1日0时0分0秒的秒数. #include <stdio.h> #includ ...
随机推荐
- Nginx:多项目开发配置跨域代理
简述Nginx应用场景(前后端) 当我们开发 vue 项目中可以通过 proxyTable 进行跨域,但如果是原生的 html+css+js ,或者其他没有跨域插件的项目中,想要跨域就要引入配置许多的 ...
- Throwable中3个异常的方法
- try catch处理流的异常
1.try catch处理异常 try{} catch(Exception e){} finally{ 必然执行的代码,一般是释放资源 } 2.流使用try catch处理异常 其中,变量作用域只在当 ...
- vue父组件中调用子组件的方法
Vue项目中如何在父组件中直接调用子组件的方法: 方案一:通过ref直接调用子组件的方法: //父组件中 <template> <div> <Button @click= ...
- IIS中配置WCF站点
http://msdn.microsoft.com/zh-cn/library/aa751852.aspx http://blog.csdn.net/hsg77/article/details/389 ...
- 使用git克隆仓库到本地报错:SSL certificate problem: unable to get local issuer certificate
第一次使用Git工具克隆仓库,使用的是HTTPS链接,失败了.发现是因为通过HTTPS访问时,如果服务器上的SSL证书未经过第三方机构认证,Git就会报错. 解决方法:通过命令关闭验证 git con ...
- Thinkphp5 主动式 计划任务 支持windows和linux
百度搜索过相关的php计划任务的资料,特别是搜索thinkphp的计划任务,目前能明确实现的都是被动式的,就是通过tp3.2自带的计划任务类实现,通过挂钩子的形式,用户访问网站的时候就执行计划任务,这 ...
- html阴影 box-shadow
右下阴影 div { box-shadow: 10px 10px 5px #888888; }四周阴影 div { box-shadow: 0 0 5px #888888; } div {box-sh ...
- python+宝塔nginx+uwsgi的搭建方法
第一: 百度搜索宝塔,然后进入root,安装lnmp,根据情况选择选择需的选项进行安装,nginx必须安装. 第二: 进入宝塔,新建网站,网站的目录,先随便指定,绑定好的域名, 进入root,到宝塔网 ...
- [源码解析] PyTorch 流水线并行实现 (3)--切分数据和运行时系统
[源码解析] PyTorch 流水线并行实现 (3)--切分数据和运行时系统 目录 [源码解析] PyTorch 流水线并行实现 (3)--切分数据和运行时系统 0x00 摘要 0x01 分割小批次 ...