获得微秒数 5
来源:互联网 发布:echo动作数据mmd 编辑:程序博客网 时间:2024/06/01 09:44
windows API计时最准的是 QueryPerformanceCounter ,CPU计时的其他任何时间函数都是用操作系统时间片计时,
多核下Windows的时间片是15毫秒,单核10毫秒,决定了你的最高精度10-15毫秒。CPU计时必须有CPU的硬件支持,ARM版WinCE也有QueryPerformanceCounter,但他的精度和时间片计时一样,
新的x86基本都能高精度计时。
利用CPU的时钟周期的差数就可以计算出一个纳秒级的计时。公式如下
时间 = CPU时钟周期数差数 / CPU主频速率(Hz)
vc中的实现代码如下
//在应用程序中精确获取系统时间,则使用下面函数:QueryPerformanceCounter();//获取CPU频率就需要下面这个函数了:QueryPerformanceFrequency();//例子#include <stdio.h>#include <Windows.h>LONGLONG GetLastTime(){ // CPU频率 LARGE_INTEGER liQPF; // 记录开始和结束时间 LARGE_INTEGER liStartTime, liEndTime; // 记录过程时间 LONGLONG llLastTime; // 获取CPU频率 QueryPerformanceFrequency(&liQPF); // 获取开始时间 QueryPerformanceCounter(&liStartTime); Sleep(10); // 获取结束时间 QueryPerformanceCounter(&liEndTime); // 计算持续时间(us) llLastTime = (liEndTime.QuadPart - liStartTime.QuadPart) * 1000000 / liQPF.QuadPart; // * 1000 --> ms return llLastTime;}int main(void){ DWORD start,stop; start = GetTickCount(); Sleep(10); stop = GetTickCount(); printf("%d ms\n",stop-start); //GetTickCount()计算得到的时间间隔精度为15ms,例如计算10ms间隔结果为0 printf("%d us\n",GetLastTime());//应用程序中时间间隔计算精确到us,QueryPerformanceCounter() return 0;}
1 获取系统时间(精确到微秒),驱动中KeQueryPerformanceCounter,Win32程序QueryPerformanceCounter
2 Windows下精确获取程序的运行时间可精确到微妙
0 0
- 获得微秒数 5
- 获得微秒数 3
- 获得微秒数 4
- 获得当前时间(时区,微秒数) 工具类
- linux 获得微秒时间
- 获取微秒数 I
- 获取微秒数 II
- 获得微秒级的时间
- MySQL:如何获得 MySQL 毫秒、微秒
- 微秒
- java计算一天的微秒数
- VC++获得微秒级时间的方法与技巧探讨
- Windows下获得精确计时的方法[微秒级]
- linux中C/C++获得微秒级时间
- Windows下获得精确计时的方法[微秒级]
- linux下获得时间差,精确到微秒级别
- MySQL:存储过程详解和如何获得 MySQL 毫秒、微秒
- VC++获得微秒级时间的方法与技巧探讨
- PHP获取当前文件路径信息的方法
- altium designer 怎么才能不经过原理图直接在空白pcb上加封装然后画线?
- sort
- Java 多线程之 Lock 的使用
- 枚举星期
- 获得微秒数 5
- swift 2
- hadoop集群调优及MR调优
- cacheimg 的使用
- v4l2 地址
- problems were encountered during export问题
- ORACLE SQL调优之统计信息缺失导致的逻辑读暴增
- Java环境配置与注意点
- mac java1.6怎么升到1.8