我们如何降低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?

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

粒度/分辨率由系统计时器分辨率决定。 这个精确的Windows计时器?…答案显示了如何获取以及如何修改系统计时器分辨率。 这里给出了编码示例(c)和这里 (c#)。