是否有人使用yourkit制作的.NET Profiler?我正在寻找一个好的.NET分析器,并偶然发现了你的。因为我会购买一个人的许可证,我将花费79欧元,这是非常好的imho。我也喜欢:或多或少易于使用和友好的GUI。
但是我在分析.NET应用程序方面不是很有经验,所以我想知道你的.NET分析器能否完成工作。但是,在Java世界中,Yourkit似乎非常有名。
有什么意见吗?
答案 0 :(得分:1)
意见?是啊。当您决定要购买哪种分析器时,give this a try。
ADDED:@Max:逐步说明:IDE有一个“暂停”按钮。在IDE下运行您的应用程序,虽然它主观上很慢,即在您等待它时,点击“暂停”按钮。然后获取调用堆栈的快照。
要对调用堆栈进行快照,我所做的就是显示它(这是调试窗口之一)。在IDE选项中,您可以找到在堆栈视图中显示内容的选项。我关闭显示函数参数的选项,因为这会使行太长。我对调用发生的行号和被调用函数的名称感兴趣。然后,在调用堆栈视图中,您可以执行“全选”,然后执行“复制”,然后将其粘贴到记事本中。我知道,这有点笨拙,但我过去经常把它们写下来。
我这样拿了几个样品。然后我看一下那些出现在多个样本上的行,因为那些是时间。有些是必要的,比如“call main”,但有些则不然。 那些是金块。如果我找不到任何东西,我会继续抽样,最多20个。如果到那时我仍然没有找到任何(非常不寻常的)程序很漂亮很好地优化。 (关键的一点是,每次执行此操作时程序变得更快,并且在此过程中剩余的性能问题变得相对更大且更容易找到。即,程序不仅以一定的比率R更快,而是剩余的问题在同一比例下变得更大,按百分比计算。)*
我在这个过程中做的另一件事是问自己该程序正在做什么以及为什么在该样本中。 “为什么”非常重要,因为这就是你如何判断一条线路是否真的有必要或者可以用更便宜的东西代替。如果我不确定它为什么会存在,我会单步执行它,或者查看数据,或者让它返回几个级别(shift-F11),直到我理解它正在做什么。这就是它的全部内容。
如果现有的分析器实际执行堆栈采样,保留样本,按照样本百分比包含它们对行进行排名,然后让您详细研究单个样本,则可以帮助完成此过程。也许他们会在某个时候,但他们现在不会。他们被挂在了效率和衡量等问题上。
*假设您的代码花费90%的时间来做X,而9%的时间花在Y上,两者都不是必需的。取少量样本,你会看到X,但可能不是Y.如果你修复X,你可以获得10倍的加速。再次进行采样(您可能需要在程序周围包裹一个外循环,以便您可以采样)。现在你确定地看到了Y,因为它现在需要9%x 10x = 90%。修复它会给你另外10倍,总体100倍加速。
答案 1 :(得分:0)
免责声明:我的建议是基于您认真对待性能分析的假设,并希望找到您的调优工作的准确%改进。
根据我对ANTS和DotTrace等性能分析器的经验,我认为它们很有用,但在某些方面都失败了。
通用性能分析器的问题是它们会增加太多开销并导致结果不准确。但是,他们确实在寻找繁重的业务方面做得很好。当您使用分析器并找到占总处理时间40%的操作时,它实际上需要40%吗?也许不吧。但它可能需要花费大量时间才能运行。
所以要回答你的问题,无论你的套装是“优秀的”还是“令人满意的”都没关系,除非它听起来如此糟糕以至于你听到了关于它的可怕故事。因为它可以让您全面了解应用中的性能瓶颈。让您了解在何处插入自己的时间记录说明,以找出应用程序的实际性能配置文件。
PS。我还建议你阅读performance profiling,这将使你对这个概念有一个全面的了解,并帮助理解其他人的建议。