我在C#中有一个始终运行的进程,除非收到处理请求,否则它将一直处于空闲状态。收到请求后,它将继续处理该请求,直到完成为止,然后再次变为空闲。我想获取每个请求的CPU墙时间,用户时间和系统时间,类似于C ++中的boost::timer::cpu_timer

Process.GetCurrentProcess().TotalProcessorTime,
Process.GetCurrentProcess().UserProcessorTime
Process.GetCurrentProcess().PrivilegedProcessorTime


会给我所有请求的时间(因为它是一个连续运行的过程)。

我想要每个请求的时间。在C#中,有什么办法可以做到这一点?

最佳答案

如果其他所有方法均失败,则始终可以计算出差异。

请注意,这将是不准确的,因为内核不可避免地会计算分配给进程的所有CPU时间,而不仅仅是计算特定的请求。

但是只要您知道您只在特定时间范围内满足了一个请求,就可以使用例如手术前后的Process.GetCurrentProcess().TotalProcessorTime可以用作合理的估计。

10-07 18:53