zoukankan      html  css  js  c++  java
  • 精确时间计算方法

    在很多应用场合需要能够知道时间间隔,比如在计算程序中想知道运行算法的时间,还有就是定时器的应用。

    这两个函数是VC提供的仅供Windows 95及其后续版本使用的精确时间函数,并要求计算机从硬件上支持精确定时器。
    QueryPerformanceFrequency()函数和QueryPerformanceCounter()函数的原型如下:

    BOOL  QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);
    BOOL  QueryPerformanceCounter(LARGE_INTEGER *lpCount);
    double time=(nStopCounter.QuadPart-nStartCounter.QuadPart)/frequency.QuadPart;

    数据类型ARGE_INTEGER既可以是一个8字节长的整型数,也可以是两个4字节长的整型数的联合结构, 其具体用法根据编译器是否支持64位而定。该类型的定义如下:

    typedef union _LARGE_INTEGER
           {
               struct
               {
                  DWORD LowPart ;// 4字节整型数
                  LONG  HighPart;// 4字节整型数
               };
               LONGLONG QuadPart ;// 8字节整型数
               
            }LARGE_INTEGER ;

    在进行定时之前,先调用QueryPerformanceFrequency()函数获得机器内部定时器的时钟频率, 然后在需要严格定时的事件发生之前和发生之后分别调用QueryPerformanceCounter()函数,利用两次获得的计数之差及时钟频率,计算出事件经 历的精确时间。下列代码实现1ms的精确定时:

    LARGE_INTEGER  cpu_frequency;
    LARGE_INTEGER  begin_count;
    LARGE_INTEGER  end_count;
    double time_diff;
    QueryPerformanceFrequency(&cpu_frequency); //get cpu frequency
    QueryPerformanceCounter(&begin_count);
    do{
        QueryPerformanceCounter(&end_count);
        time_diff =(double) (end_count.QuadPart - begin_count)/cpu_frequency.QuadPart;//get time interval
            
    }while(time_diff < 0.001)
  • 相关阅读:
    IOS NSUserDefaults 讲解 用法
    iOS6新特征:UICollectionView介绍
    iOS开发- UICollectionView详解+实例
    iOS——文件操作NSFileManager (创建、删除,复制,粘贴)
    ios对SQLite3的使用
    TableView_图片异步加载 KVO
    IOS文件操作的两种方式:NSFileManager操作和流操作
    对象归档
    利用百度智能云结合Python体验图像识别(来自qylruirui)
    python基于OpenCV的人脸识别系统
  • 原文地址:https://www.cnblogs.com/cheng07045406/p/3122792.html
Copyright © 2011-2022 走看看