2015-11-05 47 views
0

我想要一个可靠的方式(精度为0.1秒)来计时渲染过程,并找到solutionQueryPerformanceCounter)到类似的problem。然而,有一些drawbacks和一些建议以最小化运行过程的数量。我的问题是:QueryPerformanceCounter的结果时间是否足够可靠(给定所需的精度),并且代表CPU在存在某些后台进程(在Windows系统中处于非安全模式)或出现安全流程(请注意,我将关闭防病毒软件,这仅仅是一个例子)。QueryPerformanceCounter在后台进程

+1

您可能也想看看QueryThreadCycleTime API。 – rakeshdn

+0

@rakeshdn所以你更喜欢QueryProcessCycleTime(或者枚举QueryThreadCycleTime)。缺点是他们与流逝的时间没有任何关系,但是如果我理解正确,它作为比较性能的抽象方法是可靠的? – Matthias

+0

嗯,当然,一旦你的程序在野外出现,那么它将受到类似的限制。永远不要优化你的分析结果,你需要一个*代表*号码,你会有一些复制的希望。至少进行10次测量并取*中*号。 –

回答

1

现代平台(Windows> = 7,不变的TSC)提供QueryPerformanceCounter的安全使用。请参阅以下链接到一个详细的文档:

MSDN:Acquiring high-resolution time stamps

+0

但是他们只谈论不同进程和线程之间的时序,而不是多进程的存在? – Matthias

+1

它**在背景和/或其他过程中易于达到所需的精度(0.1s)。 – Arno