原文链接: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计算时间的方法的更多相关文章

  1. 关于在Qt里让程序休眠一段时间的方法总结

    出处:http://hanzhaoxin.cnblogs.com/ Qt 为何没有提供 Sleep 论坛上不时见到有人问: Qt 为什么没有提供跨平台的 sleep 函数? 使用平台相关的 Sleep ...

  2. python操作日期和时间的方法

    不管何时何地,只要我们编程时遇到了跟时间有关的问题,都要想到 datetime 和 time 标准库模块,今天我们就用它内部的方法,详解python操作日期和时间的方法.1.将字符串的时间转换为时间戳 ...

  3. java中获取日期和时间的方法总结

    1.获取当前时间,和某个时间进行比较.此时主要拿long型的时间值. 方法如下:  要使用 java.util.Date .获取当前时间的代码如下 Date date = new Date(); da ...

  4. 解析Qt中QThread使用方法

    本文讲述的是在Qt中QThread使用方法,QThread似乎是很难的一个东西,特别是信号和槽,有非常多的人(尽管使用者本人往往不知道)在用不恰当(甚至错误)的方式在使用QThread,随便用goog ...

  5. js(jQuery)获取时间的方法及常用时间类搜集

    获取时间的方法及常用时间类都是大家经常使用的,在本文为大家整理了一些,个人感觉还比较全,感兴趣的朋友可以收集下   复制代码代码如下: $(function(){ var mydate = new D ...

  6. Fedora安装qt总结四种方法

    在fedora上安装qt有四种方法,本人由于初次接触fedora,所以还是耐心的把三个方法都测试了一遍. 1.  下载源码,手动编译,选择路径安装,请参考<fedora15下搭建QT开发环境及编 ...

  7. Qt中事件处理的方法(三种处理方法,四种覆盖event函数,notify函数,event过滤,事件处理器。然后继续传递给父窗口。可观察QWidget::event的源码,它是虚拟保护函数,可改写)

    一.Qt中事件处理的方式   1.事件处理模式一 首先是事件源产生事件,最后是事件处理器对这些事件进行处理.然而也许大家会问, Qt中有这么多类的事件,我们怎么样比较简便的处理每个事件呢?设想,如果是 ...

  8. 计算时间:一个C++运算符重载示例

    Time类是一个用于计算时间的类,其原型如下:程序清单11.1 mytime0.h // mytime0.h -- Time class before operator overloading #if ...

  9. time函数计算时间

    学过C语言的都知道有个time函数可以计算时间, 也好像知道time(NULL)返回的是一个距离1970年1月1日0时0分0秒的秒数. #include <stdio.h> #includ ...

随机推荐

  1. Python增强下git那长长的指令

    场景 现如今有点规模的公司都使用GitFlow模式进行分支管理.虽然插件给我们带来了非常大的方便,但切换分支.找分支.起分支还是那么的麻烦 需求 在社会主次国家,每个生活在底层的劳动人民,他们默默的工 ...

  2. 洛谷P1125——笨小猴(简易模拟)

    https://www.luogu.org/problem/show?pid=1125 题目描述 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼.但是他找到了一种方法,经试验证明,用这种方法去 ...

  3. Php实现简易购物商城系统

    实现功能: 1.系统功能模块包括: 1)登陆注册模块 包括验证码.找回密码.注册模块中要使用Ajax判断用户名是否已经存在,使用正则表达式判断电子邮件.手机号和用户密码的格式是否合法. 2)用户管理模 ...

  4. Vue3的新特性及相关的Composition API使用

    首先 创建项目 Vue3 Vue3 相较于Vue2 的6大亮点: 1 性能快. 2 按需编译 体积更小 3 提供了组合API 类似于react 的React Hooks 4 更好的Ts支持 5 暴露了 ...

  5. 执行sudo apt-get update,连接失败

    问题:sudo apt-get update连接失败 错误:1 http://cn.mirrors.ustc.edu.cn/ubuntu bionic InRelease 连接失败 [IP: 218. ...

  6. js运行机制 值引用 值传递

    1.js是单线程的  为什么是单线程的呢  因为js作为浏览器脚本语言,会有很多和用户的互动,以及操作dom,多个线程会出问题. 2.js有同步任务,异步任务(ajax,用户点击等,settimeou ...

  7. mysql where in 数组解决小tips

    由于sql语法要求,不可在in后面直接连数组,若数组形式下,则需要转换成逗号隔开的字符串 <?php$arr = array(1,2,3,4,5);$arr_string= join(',', ...

  8. 软件开发的V模型

    原文来自:http://www.51testing.com/html/67/n-3723567.html 软件开发的V模型大家都不陌生,其中测试阶段分为单元测试->功能测试->系统测试-& ...

  9. Android Kotlin协程入门

    Android官方推荐使用协程来处理异步问题.以下是协程的特点: 轻量:单个线程上可运行多个协程.协程支持挂起,不会使正在运行协程的线程阻塞.挂起比阻塞节省内存,且支持多个并行操作. 内存泄漏更少:使 ...

  10. DeDeCMS v5.7 漏洞复现

    DedeCMS V5.7 漏洞复现 XSS漏洞 首先我们在首页要进行用户的注册以及登录 这里我们已经提前注册过了,登录即可 普通用户账号密码:root/passwd 管理员账号密码:admin/pik ...