VC下毫秒级定时器、测量时间的获取、LARGE_INTEGER使用
来源:互联网 发布:刷论坛推广软件 编辑:程序博客网 时间:2024/05/21 22:51
在VC中,使用自带的 SetTimer 函数的定时器精度不高,包括 GetTIckCount 获取滴答数(理论上说只有55ms的精度);还有 Sleep 函数,精度都不是很高,达不到毫秒级的测量;
可以使用多媒体下的定时器函数:
#include <windows.h>#include <stdio.h>#include <Mmsystem.h>//声明的头文件//链接多媒体lib库#pragma comment(lib, "Winmm.lib")void main(){timeBeginPeriod(1);//设置1毫秒的测量精度Sleep(100);int j=0;//多次测量for(int i=0; i<10; i++){DWORD s = timeGetTime();//开始时间(毫秒级)//测量1:Sleep延时函数的精度for (j=0; j<100; j++)Sleep(1);//测量2:for循环千万级延时//for (j=0; j<10000000; j++);//测算34~40毫秒,所以for循环每条指令为3~4个nsDWORD e = timeGetTime();//结束时间(毫秒级)//显示测量时间printf("%d\n", e-s);//}}
再来一个用QueryPerformanceFrequency类的函数测量延时的程序,这些函数在当前CPU上支持,比上面的多媒体更好用一些:
LARGE_INTEGER litmp;LONGLONG qt1,qt2;double dft,dff,dfm;//获得时钟频率QueryPerformanceFrequency(&litmp);//获得时钟频率dff=(double)litmp.QuadPart;//获得初始值QueryPerformanceCounter(&litmp);qt1=litmp.QuadPart;//下面一些耗时的操作Sleep(100);//获得终止值QueryPerformanceCounter(&litmp);qt2=litmp.QuadPart;//获得对应的时间值,转到毫秒单位上dfm=(double)(qt2-qt1);dft=dfm/dff;printf("用时: %.3f 毫秒\n", dft*1000.0);
上面的测量在工程中非常使用,基本可以在windows平台下测试一些使用时间的情况,比如用套接字发送一个大数据块、显示一个位图等等!对每个应用的程序段时间消耗都清楚,才能写出高质量的程序!
- VC下毫秒级定时器、测量时间的获取、LARGE_INTEGER使用
- Linux下获取毫秒级时间
- JSP下获取毫秒级时间戳
- VC中取得毫秒级的时间
- VC中取得毫秒级的时间
- VC中取得毫秒级的时间
- LARGE_INTEGER 数据结构使用,测量Sleep精度
- 获取当前实例测量得出的总运行时间(以毫秒为单位)。
- php下获取时间的毫秒表示,非时间戳
- ORACLE 获取时间的毫秒
- 获取时间的毫秒数
- Linux获取毫秒级时间
- C++ 获取时间 毫秒级
- Linux获取毫秒级时间
- Window系统下C/C++程序毫秒和微秒级程序运行时间的获取方法
- VC中取得毫秒级、微妙级的时间
- VC获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法
- VC获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法
- dbx 常用命令
- Python之道–LEGB法则
- html5学习笔记---01.HTML5介绍,02.HTML5的新特性
- 创建一个既可作为普通exe(双击能运行),又可作为服务运行的程序
- android:ListView:convertView.setTag()来设置数据
- VC下毫秒级定时器、测量时间的获取、LARGE_INTEGER使用
- 最佳String判断是否为空
- mysql配置文件需要修改两个地方(编码)
- 安装VMware Tools Darwin
- c++和c读写文件的悲剧如何发生的
- java面试准备之---Struts2体系知识点,系统复习,struts2原理,ognl,el支持.---随时更新
- 安装错误的解决方法(mac虚拟机安装)
- C++中const用法总结
- ustc oj 1002 Easy or not