我在C#中有一个始终在运行的进程,除非收到处理请求,否则它是空闲的。一旦收到请求,它继续处理该请求,直到它完成再次变为空闲。我希望得到每个请求的CPU挂起时间,用户时间和系统时间,类似于C ++中的boost::timer::cpu_timer
。
Process.GetCurrentProcess().TotalProcessorTime,
Process.GetCurrentProcess().UserProcessorTime
Process.GetCurrentProcess().PrivilegedProcessorTime
会给我所有请求的时间(因为它是一个连续运行的过程)。
我想要每次请求的时间。在C#中有没有办法可以得到这个?
答案 0 :(得分:2)
如果所有其他方法都失败了,您可以随时计算差异。
请注意,这不准确,因为内核不可避免地计算分配给流程的所有 CPU时间,而不仅仅是处理某个请求。
但只要您知道您在特定时间范围内仅提供了单个请求,请使用例如在行动之前和之后Process.GetCurrentProcess().TotalProcessorTime
可以作为合理的估计。