c++利用windows函数实现计时示例

 更新时间:2014年05月04日 10:30:27   作者:  
这篇文章主要介绍了c++利用windows函数实现计时示例,需要的朋友可以参考下

复制代码 代码如下:

//Windows系统下可以用 time(),clock(),timeGetTime(),GetTickCount(),QueryPerformanceCounter()来对一段程序代码进行计时

#include <stdio.h>
#include <windows.h>
#include <time.h>                   //time_t time()  clock_t clock()   
#include <Mmsystem.h>               //timeGetTime()   
#pragma comment(lib, "Winmm.lib")   //timeGetTime()   

//使用方法:将Sleep()函数换成需要测试运行时间的函数即可。

int main()
{   //用time()来计时,以秒为单位
    time_t timeBegin, timeEnd;
    timeBegin = time(NULL);
    Sleep(1000);
    timeEnd = time(NULL);
    printf("%d\n", timeEnd - timeBegin);


    //用clock()来计时,以毫秒为单位
    clock_t  clockBegin, clockEnd;
    clockBegin = clock();
    Sleep(800);
    clockEnd = clock();
    printf("%d\n", clockEnd - clockBegin);


    //用timeGetTime()来计时,以毫秒为单位
    DWORD  dwBegin, dwEnd;
    dwBegin = timeGetTime();
    Sleep(800);
    dwEnd = timeGetTime();
    printf("%d\n", dwEnd - dwBegin);


    //用GetTickCount()来计时,以毫秒为单位
    DWORD  dwGTCBegin, dwGTCEnd;
    dwGTCBegin = GetTickCount();
    Sleep(800);
    dwGTCEnd = GetTickCount();
    printf("%d\n", dwGTCEnd - dwGTCBegin);


    //用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\n第二次计时器值%I64d\n计时器差%I64d\n", c1, c2, c2 - c1);
    printf("计时%lf毫秒\n\n", (c2 - c1) * 1000 / dff);
    return 0;
}



相关文章

  • 详解C++中递增运算符重载的实现

    详解C++中递增运算符重载的实现

    本文主要详解运算符重载里的递增运算符重载;递增和递减原理是一样的,这里就只分享递增的重载;提到递增递减,我们都知道又前置和后置两种方法, 那今天就详解一下前置递增和后置递增的细节,拿捏递增运算符重载
    2022-06-06
  • 使用C++ Matlab中的lp2lp函数教程详解

    使用C++ Matlab中的lp2lp函数教程详解

    本文介绍如何使用C++编写数字滤波器设计算法,实现Matlab中的lp2lp函数,将低通滤波器转换为参数化的低通滤波器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-04-04
  • java 出现NullPointerException的原因及解决办法

    java 出现NullPointerException的原因及解决办法

    这篇文章主要介绍了java 出现NullPointerException的原因及解决办法的相关资料,这里说明出现NullPointerException 的原因的总结,并说明该如何解决,需要的朋友可以参考下
    2017-08-08
  • C/C++ 控制台等待指令解析

    C/C++ 控制台等待指令解析

    这篇文章主要介绍了C/C++ 控制台等待指令解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • C++实现添加图片水印到PDF文档

    C++实现添加图片水印到PDF文档

    水印是显示在文档内容后面的淡色文字或图片,可以用于指示文档的状态(保密、草稿等),本文主要为大家介绍了如何使用 Spire.PDF for C++ 在 PDF 文档中添加图片水印,需要的可以参考下
    2023-11-11
  • C++第三方库jsoncpp超详细讲解

    C++第三方库jsoncpp超详细讲解

    这篇文章主要介绍了C++第三方库jsoncpp的相关资料,JSONcpp是一个在C++中用于处理JSON数据的库,支持JSON格式的序列化和反序列化,通过JSONcpp,可以轻松地将数据对象组织成JSON格式的字符串,需要的朋友可以参考下
    2024-10-10
  • C和C++如何实现互相调用详解

    C和C++如何实现互相调用详解

    在学习c++中用到一些古老的c语言库时,在工作中我们经常要使用C和C++混合编程,下面这篇文章主要给大家介绍了关于C和C++如何实现互相调用的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • C 语言基础教程(我的C之旅开始了)[三]

    C 语言基础教程(我的C之旅开始了)[三]

    C 语言基础教程(我的C之旅开始了)[三]...
    2007-02-02
  • 详解C++之类和对象(2)

    详解C++之类和对象(2)

    类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员函数
    2021-11-11
  • c实现linux下的数据库备份

    c实现linux下的数据库备份

    本文给大家简单介绍下c实现linux下的数据库备份的方法和具体的源码,十分的实用,有需要的小伙伴可以参考下。
    2015-07-07

最新评论