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