我们如何降低myProcess.TotalProcessorTime的分辨率?

时间:2015-04-16 13:46:37

标签: c# process timer resolution

我正在使用TotalProcessorTime通过cpu中的方法测量时间。

for(int i=0;i<10;i++){
    double s = Process.getCurrentProcess().TotalProcessorTime;
    primeNumber(500);  //return the 500 primenumber 
    doube e = Process.getCurrentProcess().TotalProcessorTime;
    Console.writeLine(e-s);
}

输出如下: 0 15,0001 15,0001 0 32,0002 0 15,0001 0 15,0001

所以所有输出都达到了15,6001,分辨率非常高。

那么我们如何才能将此分辨率降低为1,2,6,5,2?

之类的值

为什么对于相同的代码,它给出不同的值0 15,6001 32,0002?

1 个答案:

答案 0 :(得分:1)

我几乎可以肯定您会想要使用StopwatchQueryPerformanceCounter或类似内容。但是,TotalProcessorTime的粒度可以修改:

粒度/分辨率由系统计时器分辨率决定。 此Accurate Windows timer?...答案显示了如何获取以及如何修改系统计时器分辨率。编码示例给出了here(c)和here(c#)。