none
多核机器上如何测试程序性能 RRS feed

  • 问题

  • 我的环境是vs2010,C++程序,请问如何较精确测试程序的性能?

    QueryPerformanceCounter

     

    能用来测试多核吗?因为使用它的时候要除以cpu频率,现在多核了,需要除以(核数目*cpu频率)吗? 
    2010年12月14日 2:54

答案

全部回复

  • 对于多核框架下QueryPerformanceCounter是不能保证其获得的时钟周期是正确的。有些关于timeticker的注意事项:

    • Be careful using RDTSC to get timing information for your game
    • Clock rate can vary with Power Management settings
    • Multi-processor and multi-core make no guarantees about syncing the cycle counts
    • If your thread gets run on a different core, time might appear to go backwards or jump a large amount
    • timeGetTime does not suffer from these issues, but is much lower resolution
    • Use QueryPerformanceCounter instead of RDTSC, which should cope with the multi-core issue
    • Use SetThreadAffinityMask to try to collect timing data always from same core
    • Only call from a single thread and only a few times per frame
    • Use QueryPerformanceFrequency every few frames to handle power management clock rate changes
    • Be sure your delta computation checks for negative time and bounds the range

     


    麻烦把正确答案设为解答。
    • 已标记为答案 Daneill 2010年12月20日 2:27
    • 取消答案标记 Daneill 2010年12月20日 2:27
    2010年12月15日 4:11
    版主
  • 2010年12月15日 4:30
    版主
  • 用mmsystem.h里面的多媒体时钟吧,能到1ms
    0xBAADF00D
    2010年12月15日 12:52
    版主
  • 您好,

    您的问题解决了么?如果没有的话,请取消答案标记,并且更新问题信息。

    致礼


    Jesse Jiang [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2010年12月23日 7:58
    版主