我们如何降低myProcess.TotalProcessorTime的分辨率?
我正在使用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(es); }
输出如下: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?
我几乎可以肯定你会想要使用Stopwatch
, QueryPerformanceCounter
或类似的东西。 但是,可以修改TotalProcessorTime
的粒度:
粒度/分辨率由系统计时器分辨率决定。 这个精确的Windows计时器?…答案显示了如何获取以及如何修改系统计时器分辨率。 这里给出了编码示例(c)和这里 (c#)。