http://gmd20.blog.163.com/blog/static/168439232012113111759514/ 执行 10000000 次, 耗时 2258,369 微秒     QueryPerformanceCounter 执行 10000000 次, 耗时 26,347 微秒        GetTickCount 执行 10000000 次, 耗时 242,879 微秒     time() c的时间函数 time(time_t) 大概比GetSystemTimeAsFi…
介绍 我 们在衡量一个函数运行时间,或者判断一个算法的时间效率,或者在程序中我们需要一个定时器,定时执行一个特定的操作,比如在多媒体中,比如在游戏中等,都 会用到时间函数.还比如我们通过记录函数或者算法开始和截至的时间,然后利用两者之差得出函数或者算法的运行时间.编译器和操作系统为我们提供了很多时间 函数,这些时间函数的精度也是各不相同的,所以,如果我们想得到准确的结果,必须使用合适的时间函数.现在我就介绍windows下的几种常用时间函数. 1:Sleep函数 使用:sleep(1000),在…
QueryPerformanceFrequency() - 基本介绍 类型:Win32API 原型:BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency); 作用:返回硬件支持的高精度计数器的频率. 返回值:非零,硬件支持高精度计数器:零,硬件不支持,读取失败. QueryPerformanceFrequency() - 技术特点 供WIN9X使用的高精度定时器:QueryPerformanceFrequency()和QueryPer…
花了很长时间才得到的经验,与大家分享. 1. RDTSC - 粒度: 纳秒级 不推荐优势: 几乎是能够获得最细粒度的计数器抛弃理由: A) 定义模糊- 曾经据说是处理器的cycle counter,但是后来似乎又不是了.有的机器上每秒的TSC增长值等于CPU频率,有的却是一个不对应任何配置的数.到底是什么,Intel也没解释清楚. B) 不准确- 这是最重大的缺陷.再细的粒度,不准的话也没用,至少不能当时间用.在有的CPU上,特别是支持变频技术的笔记本CPU上,TSC增长值会随着CPU的频率改变…
执行 10000000 次, 耗时 2258,369 微秒     QueryPerformanceCounter 执行 10000000 次, 耗时 26,347 微秒    GetTickCount 执行 10000000 次, 耗时 242,879 微秒     time() c的时间函数 time(time_t) 大概比GetSystemTimeAsFileTime慢6倍,比_ftime 快6倍 执行 10000000 次, 耗时 1310,066 微秒   _ftime 执行 1000…
C# 用法: public static class QueryPerformanceMethd { [DllImport("kernel32.dll")] public extern static short QueryPerformanceCounter(ref long x); [DllImport("kernel32.dll")] public extern static short QueryPerformanceFrequency(ref long x)…
本文对Windows平台下常用的计时函数进行总结,包括精度为秒.毫秒.微秒三种精度的5种方法.分为在标准C/C++下的二种time()及clock(),标准C/C++所以使用的time()及clock()不仅可以用在Windows系统,也可以用于Linux系统.在Windows系统下三种,使用Windows提供的API接口timeGetTime().GetTickCount()及QueryPerformanceCounter()来完成.文章最后给出了5种计时方法示例代码. 标准C/C++的二个计…
LARGE_INTEGER tima,timb; QueryPerformanceCounter(&tima); 在 Windows Server 2003 和 WindowsXP 中使用 QueryPerformanceCounter 函数的程序可能执行不当 QueryPerformanceCounter 來精確計算執行時間 QueryPerformanceCounter 來精確計算執行時間 // 這個程式展示了如何使用QueryPerformanceCounter 來精確計算執行時間 //代…
var t1,t2:int64; r1,r2,r3:double; begin QueryPerformanceFrequency(c1);//WINDOWS API 返回计数频率 (Intel86:1193180)(获得系统的高性能频率计数器在一毫秒内的震动次数) QueryPerformanceCounter(t1);//WINDOWS API 获取开始计数值 //需要计时的程序代码 QueryPerformanceCounter(t2);//获取结束计数值 r1:=(t2-t1)/c1;/…
一段简单的代码来实现精度试验 int main() {       // 初始化代码       ......       int i = 0;       while(i++ < 1000)       {              // 获取时间代码              ......              printf(...); // 将时间打出       } } 通过结果可以看出Sleep, GetTickCount都是10~35ms左右的时间跳跃,timeGetTime为1…