Visual c++ 高精度cpu定时器

Visual c++ 高精度cpu定时器,visual-c++,performance,performancecounter,Visual C++,Performance,Performancecounter,一位高度优化代码的专家曾经告诉我,他的策略的一个重要部分是在CPU上提供极高性能的计时器。有人知道这些是什么,以及如何访问它们来测试各种代码优化吗 虽然我感兴趣,但我也想问一下,是否有可能通过VisualStudioC++ + < p>访问高于汇编(或者只使用一个小程序集)的东西,这将是平台依赖的,但是既然提到VisualStudio,我将假定Windows。p> 您需要在win32中使用。您也可以在.Net中使用 Re:秒表分辨率 直接从链接文档中获取 使用频率和分辨率字段确定秒表计时实施的

一位高度优化代码的专家曾经告诉我,他的策略的一个重要部分是在CPU上提供极高性能的计时器。有人知道这些是什么,以及如何访问它们来测试各种代码优化吗


虽然我感兴趣,但我也想问一下,是否有可能通过VisualStudioC++ +

< p>访问高于汇编(或者只使用一个小程序集)的东西,这将是平台依赖的,但是既然提到VisualStudio,我将假定Windows。p> 您需要在win32中使用。您也可以在.Net中使用

Re:秒表分辨率
直接从链接文档中获取

使用频率和分辨率字段确定秒表计时实施的精度和分辨率


换句话说,它可以是高分辨率或低分辨率。如果它是低的,而您需要高的,那么您可以选择win32计时器函数(QueryPerformanceCounter等)

QueryPerformanceCounter()和win32中的相关函数使用大多数现代Intel芯片内置的高性能计时器。

计时器的准确性完全取决于您的硬件。如果你的硬件不能测量小于一微秒的东西,就不可能比精确到最近的微秒更精确


然而,根据我的经验,我从未需要比毫秒更精确的性能度量。除非你正在构建一个微控制器,其中每一条汇编指令都对你的速度至关重要,否则任何明显的速度差都将是几秒钟,而不是几微秒。如果你使用Visual C++,你不太可能在微控制器上工作。

我认为秒表只使用通常的Windows提供的时间,例如分辨率大约为10-15Ms(我想它确实是用每个线程开关更新的)。我认为秒表只是一个合理的计时器,这是错的吗?哦,天哪,你是对的,它确实有那些字段。我已经忘了,但我对过去用过的秒表很熟悉,所以我没有仔细看。我很抱歉。我有很多数据很快就进来了,需要用准确的到达时间指示器来标记。一微秒可能有效,但我怀疑,10是不可能的。当然,输入这个,我意识到线程问题本身就阻止你获得超过10微秒的时间,你的线程将被调出这么长的时间。嗯,我想知道wireshark是如何获得这些微秒到达时间的。