Windows平台的计时器

原创 2012年03月26日 17:35:41

Windows平台下,常用的计时器有两种:

1, TimeGetTime计时器,它可以提供毫秒级ms的计时。但这个精度对很多应用场合而言还是不够精确的。

例子:

#include <windows.h>
#include <stdio.h>
#pragma comment(lib, "winmm")//告诉程序要链接winmm.lib,VC中路径:VC98-->lib-->winmm.lib
main()
{
DWORD t1, t2;
t1 = timeGetTime();
Sleep(50);
t2 = timeGetTime();
printf("Start Time:    %uμs\n", 1000*t1);
printf("End Time:      %uμs\n", 1000*t2);
printf("Lasting Time: %uμs\n",(1000*t2-1000*t1));
}
2,QueryPerformanceCount计数器

此计数器随系统的不同可以提供微秒级μs的计数,如果硬件里有定时器,它就会启动这个定时器,并且不断获取定时器。
这样的定时器精度,就跟硬件时钟的晶振一样精确的。当需要更高精度计时时就需要使用QUeryPerformanceCounter来查询定时器的计数值。对于实时图形处理、多媒体数据流处理、或者实时系统构造的程序员,

善用QueryPerformanceCount/QueryPerformanceFrequency是一项基本功。

//Timer2.cpp 使用QueryPerformanceCounter函数(查询定时器的计数值,其时间跟频率有关,例如Frequency为25000000,则每计数一次消耗0.04μs)    

//编译行:CL timer3.cpp /link KERNEl32.lib

#include <windows.h>
#include <stdio.h>
main()
{
LARGE_INTEGER t1, t2, tf;
QueryPerformanceFrequency(&tf);
printf("Frequency: %u\n", tf.QuadPart);
QueryPerformanceCounter(&t1);
Sleep(50);
QueryPerformanceCounter(&t2);
printf("Start Time:    %u\n", 1000000*t1.QuadPart);
printf("End Time:      %u\n", 1000000*t2.QuadPart);
printf("Lasting Time: %uμs\n",(1000000*t2.QuadPart-1000000*t1.QuadPart)/tf.QuadPart);
}
   /////////////////////////////////执行结果//////////////////////////////////
       Frequency:     25000000               Frequency:     25000000
  ①Start Time:     401052736          ②Start Time:     3144881664     
       End Time:       2553536896             End Time:       3878562048
       Lasting Time: 49907 μs                  Lasting Time: 50881 μs
   ////////////////////////////////////////////////////////////////////////////
可见,TimeGetTime函数的精确度是到ms,一旦到达μs级位数则为零,而QueryPerformanceCounter函数则可精确到μs级。

相关文章推荐

Nginx在Windows平台的配置

  • 2017年11月01日 20:25
  • 332KB
  • 下载

Jenkins + Jmeter 构建接口、性能测试 (Windows平台)

Jenkins + Jmeter 可以很轻松的进行打包发布程序后自动进行接口冒烟测试,或者定时性能测试。以下是详尽的Jenkins + Jmeter 安装配置及创建一个任务。   本教程详尽的描写了J...

windows平台下基于UDP的socket编程

  • 2015年07月01日 17:12
  • 2KB
  • 下载

定时器 VER4.0 (Windows平台)

  • 2013年09月02日 00:32
  • 489KB
  • 下载

FFMPEG在Windows平台编译的傻瓜教程

从一台空白的电脑开始,一步一步完成ffmpeg的编译操作

Windows平台下安装与配置mySQL

  • 2013年12月05日 20:14
  • 1.05MB
  • 下载

windows平台影子系统

  • 2014年03月27日 17:22
  • 2.07MB
  • 下载

【VS开发】Windows平台下Makefile学习笔记

作者:朱金灿 来源:http://blog.csdn.net/clever101           决心学习Makefile,一方面是为了解决编译开源代码时需要跨编译平台的问题(发现一些开源代...

android jni(demo) 基于windows平台

  • 2014年03月02日 18:19
  • 335KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Windows平台的计时器
举报原因:
原因补充:

(最多只允许输入30个字)