【发布时间】:2010-11-05 07:12:23
【问题描述】:
我刚刚下载了ANTS Performance Profiler from Red Gate 的试用版,正在调查我团队的一些代码。我立即注意到 ANTS 报告有一段特定的代码占用了高达 99% 的 CPU 时间。
我完全不熟悉 ANTS 或一般的性能分析(也就是说,除了使用我确信是极其粗略和不受欢迎的方法进行自我分析之外,例如 double timeToComplete = (endTime - startTime).TotalSeconds),所以我仍在摆弄围绕应用程序并弄清楚它是如何使用的。但我确实打电话给负责该代码的开发人员,他的直接反应是“是的,它这么说并不让我感到惊讶;但是该代码调用 SignalAndWait [我可以自己看到,感谢 ANTS],它不使用任何 CPU,它只是坐在那里等待要做的事情。”他建议我直接忽略该代码并寻找我能找到的任何其他内容。
我的问题:SignalAndWait 是否确实不需要 CPU 开销(如果是,这怎么可能?),性能分析器将其视为占用 99% 的 CPU 时间是否合理?我觉得这特别奇怪,因为如果它是 99%,这表明我们的应用程序经常处于空闲状态,不是吗?然而最近它的表现却变得相当低迷。
就像我说的,当谈到这个工具时,我真的只是一个初学者,我对 WaitHandle 类一无所知。因此,任何有助于我了解这里发生的事情的信息都将不胜感激。
【问题讨论】:
标签: .net performance multithreading profiling waithandle