Stopwatch.GetTimeStamp()
可能会返回different timing results on different processors because of bugs in the BIOS or the Hardware Abstraction Layer。
有谁知道具体来说这些错误存在什么?
答案 0 :(得分:1)
这是因为它写在doc:
中秒表课程有助于操纵与时间相关的操作 托管代码中的性能计数器。具体来说,频率 可以使用字段和GetTimestamp方法代替非托管方法 Win32 API QueryPerformanceFrequency和QueryPerformanceCounter。
因此,使用性能计数器的问题就来了。
Windows实现至少有两个可能的性能计数器源,HPET,RDTC,这由ACPI决定。然而,ACPI主要是问题,大多数制造商正在严格执行它,因此有时候决定完全忽略ACPI建议并做其他事情。
当使用RDTC时,如果运气不在你身边并且你无论如何都要测量一个超小的时间,那么在另一个CPU上进行线程迁移会导致轻微的负面结果。但它可能发生。