注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

Windows高精度计时函数  

2014-05-15 14:07:58|  分类: Windows编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
前面提到过使用clock函数计时,但是只能精确到毫秒级别,这里通过使用系统函数,能精确到微秒了,由于使用了Windows的函数,因此需要包含头文件Windows.h。
#include <stdio.h>
#include <windows.h>
int main()
{
    LARGE_INTEGER li;
    /*
    BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);
    作用:返回硬件支持的高精度计数器的频率。
    返回值:非零,硬件支持高精度计数器;零,硬件不支持,读取失败。
    */
    if(!QueryPerformanceFrequency(&li))
        return -1;
    double st,et;
    double dff;
    dff=(double)li.QuadPart;
    printf("%f\n",dff);
    //QueryPerformanceCounter得到高精度计时器的值
    QueryPerformanceCounter(&li);
    st=(double)li.QuadPart;
    //休眠312毫秒,注意Sleep函数的精度非常低
    Sleep(312);
    QueryPerformanceCounter(&li);
    et=(double)li.QuadPart;
    printf("st:%f,et:%f\n",st,et);
    printf("time elapsed:%f",(et-st)/dff);
    return 0;
}

运行结果不一定就是312ms,可以看截图:
Windows高精度计时函数 - Lemniscate - 信息,灵感,创新
 可以看到,实际只使用了311.2ms,不到312ms。

  评论这张
 
阅读(562)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016