在某些机器上,我的.Net应用程序空闲时CPU占用率约为10%。我的第一个倾向是我的一个后台工作线程正在执行一些我不知道的指令,但我不知道如何通过线程隔离CPU使用率(任务管理器只是告诉我我的进程使用 x 线程数[通常在30左右],而不是哪些线程占用CPU)。
我知道我可以通过编程方式迭代this post中提到的线程,但我不知道这是否会提供我需要的信息。是否有分析器(商业或其他)可以让我分析每个线程的CPU使用率?
答案 0 :(得分:4)
我会推荐JetTrace dotTrace Performance。它将告诉您代码大部分时间花在哪里,以及线程。 (它是商业性的,但可以免费试用10天。)
答案 1 :(得分:2)
尝试Microsoft的Perfview:http://www.microsoft.com/en-us/download/details.aspx?id=28567
您可以使用系统ETW事件来计算大量低CPU利用率问题。
答案 2 :(得分:1)
如何附加调试器并点击“中断”按钮。然后看看你的代码中是否有任何线程正在运行?
答案 3 :(得分:0)
我第二次NominSim's answer并建议Red Gate's ANTS Performance Profiler。过去帮了我很多。
他们有14天的免费试用版。