首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于测量时间的HPET频率与CPU频率

用于测量时间的HPET频率与CPU频率
EN

Stack Overflow用户
提问于 2012-10-19 17:18:41
回答 1查看 2.4K关注 0票数 1

我需要用纳秒来度量函数的执行时间。现在我想知道我的计算机是否可以做到这一点,以及测量的精度是多少。有人建议使用QueryPerformanceFrequency()来获取HPET的频率,1/hpetFrequency是可以测量的原子时间。是这样的吗?我的意思是,如果我的cpu频率是3.33GH,即使是1 1GHz,一个时钟持续时间也是1纳秒。这不是意味着我可以用纳秒来测量吗?

对于测量时间,CPU或HPET的频率是必不可少的,为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-19 17:54:07

你不能测量到1纳秒,你也不能测量到10纳秒。这是因为每个action of measurement都需要某种调用。最快的API之一是GetSystemTimeAsFileTime()。一个呼叫需要10-15 10。但它的分辨率/粒度相当差(在ms系统中)。QueryPerformanceCounter()提供MHz到GHz范围内的频率,具体取决于底层硬件。这个调用没有那么快,但是在1 1MHz的频率下,你可以得到1微秒的分辨率。在QueryPerformanceFrequency()给定的频率下,连续调用可能会返回相等的值,因为调用比增量速率更快。另一个来源是CPU时间戳计数器(rdtsc)。但它也有一些缺点:现代硬件实现了自适应的CPU频率。因此,不能将此频率视为常量。这样,测量只可能在恒定的阶段进行。

事实上,没有一个频率源提供恒定的频率。所有这些频率都是由具有offset and drift的硬件产生的。因此,操作系统将返回一个QueryPerformanceFrequency或CPU频率的值,并使您相信它是一个常量。但是,您将获得的数字仅为close estimates

只有在根据系统RTC校准这些频率时,才能执行真正精确的计时。有关windows上的精确计时的更多详细信息,请参见this出版物。

cpu编辑:窗口选择Time Stamp Counter。在这种情况下,QPF()的结果等于处理器速度除以一个固定数字(在本例中为1024)。当恒定/不变的TSC可用时,Windows优先选择围绕TSC构建计时。3.33 GHz/1024=3.25 MHz。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12971110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档