C# 如何降低myProcess.TotalProcessorTime的分辨率?
我使用TotalProcessorTime通过cpu中的一种方法来测量时间速度C# 如何降低myProcess.TotalProcessorTime的分辨率?,c#,process,timer,resolution,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; Co
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);
}
对于(int i=0;i我几乎可以肯定,您希望使用秒表
、查询性能计数器
,或类似工具来实现您的愿望。但是,TotalProcessorTime
的粒度可以修改:
粒度/分辨率由系统计时器分辨率决定。
这个答案说明了如何获取和修改系统计时器分辨率。下面给出了(c)和(c#)的编码示例.您确定需要通过TotalProcessorTime
来花费时间吗?为什么不使用一个呢?此计时器基于时钟中断频率,默认情况下每秒滴答64次。您可以获得更高的分辨率,这需要pinvoking QueryProcessCycleTime()。尽管它返回的是处理器周期,而不是时间。@对于其他后台进程,germi stopwatch也需要一段时间,例如,如果处理器不在我们的进程中,则此时间也将被计算出来(调度内容).所以我需要的只是我的过程中的时间cpu@Sayse不明白,你能再解释一下吗?@HansPassant我如何使用QueryProcessCycleTime()为了解决TotalProcessTime的问题,以便只获取进程在cpu中的时间?我没有尝试为您提供代码。我想给您一个线索。但是,您可能会看到,我告诉过您,因为我已经看到了您提供给我的链接,所以我测试了代码,但没有执行相同的操作:)