高度优化代码的专家曾告诉我,他的策略的一个重要部分是CPU上极高性能定时器的可用性。有谁知道这些是什么以及如何访问它们来测试各种代码优化?
虽然我感兴趣,但我也想问一下,是否可以通过visual studio C ++从高于装配(或只有一点装配)的东西访问它们?
答案 0 :(得分:4)
这将取决于平台,但既然你提到Visual Studio,我会假设windows。
win32中需要QueryPerformanceCounter。您也可以在.Net中使用StopWatch。
Re:秒表决议
直接来自链接文档
使用Frequency和IsHighResolution字段确定秒表计时实施的精度和分辨率。
换句话说,它可以是高分辨率或低分辨率。如果它很低并且您需要高电平,您将调用win32 Timer函数(QueryPerformanceCounter等)
答案 1 :(得分:2)
Win32中的QueryPerformanceCounter()和相关功能使用大多数现代英特尔芯片内置的高性能定时器。
答案 2 :(得分:1)
计时器的准确性完全取决于您的硬件。如果你的硬件不能测量小于一微秒的东西,那么就不可能比最接近的微秒更准确。
但根据我的经验,我从未需要比毫秒更精确的性能测量。除非您正在构建一个微控制器,其中每个汇编指令对您的速度至关重要,否则任何明显的速度差都将是几秒钟而不是几微秒。如果您使用的是Visual C ++,那么您不太可能使用微控制器。