我正在使用 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);
}
输出如下:015,000115,0001032,0002015,0001015,0001
所以所有输出都是 15,6001 的倍数,分辨率非常高。
那么我们如何才能将这个分辨率降低到 1,2,6,5,2 这样的值呢?
为什么相同的代码会给出不同的值 0 15,6001 32,0002 ?
我几乎可以肯定您会想要使用 Stopwatch
、QueryPerformanceCounter
或类似的东西来满足您的需求。但是,可以修改 TotalProcessorTime
的粒度:
粒度/分辨率由系统计时器分辨率决定。这Accurate Windows timer?...答案显示了如何获取和修改系统计时器分辨率。给出了编码示例 here (c) 和 here (c#).
我是一名优秀的程序员,十分优秀!