秒表真的坏了吗?

时间:2010-04-06 14:53:52

标签: .net stopwatch

Stopwatch class的MSDN页面上,我发现了interesting article的链接,其中有关于秒表的声明:

  

但是有一些严重的问题:

     
      
  • 在具有多个处理器的PC上,这可能不可靠。由于中的错误   BIOS,Start()和Stop()必须在同一处理器上执行才能获得   一个正确的结果。

  •   
  • 对于没有恒定时钟的处理器,这是不可靠的   速度(大多数处理器可以降低时钟速度以节省   能源)。详细解释了here

  •   
我很困惑。我见过tons of examples使用秒表,没有人提到这个缺点。这有多严重?我应该避免使用秒表吗?

3 个答案:

答案 0 :(得分:2)

它不是破碎它只是有局限性。对于大多数用途(阅读:非正式微基准测试)StopWatch可以使用,因为它非常适合非正式测试。出于更正式的目的,您很可能希望推出自己的仪器代码,因为您需要更多地投入以获得正确的结果。

答案 1 :(得分:2)

更有趣的问题是:

  1. 在什么条件下,Stop()会在与Start()不同的处理器上执行? 。
    在大多数应用场景中,答案是“无”。

  2. 在什么条件下处理器的时钟速度会在测量间隔内发生变化? 。
    在CPU密集型基准测试中,“无”。

答案 2 :(得分:2)

请参阅MSDN文章中的说明:

  

在多处理器计算机上,运行该线程的处理器无关紧要。但是,由于BIOS或硬件抽象层(HAL)中的错误,您可以在不同的处理器上获得不同的时序结果。要指定线程的处理器关联,请使用ProcessThread.ProcessorAffinity方法。