我正在使用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?
答案 0 :(得分:1)
我几乎可以肯定您会想要使用Stopwatch
,QueryPerformanceCounter
或类似内容。但是,TotalProcessorTime
的粒度可以修改:
粒度/分辨率由系统计时器分辨率决定。 此Accurate Windows timer?...答案显示了如何获取以及如何修改系统计时器分辨率。编码示例给出了here(c)和here(c#)。