我知道 Redgate 的 Ants Profiler,我听说它很棒,但也是 400 美元。那里有任何更便宜的替代品,至少可以指出我可能需要优化代码的地方吗?
4 回答
Dottrace的价格大约是 Ants 的一半,而且真的很不错。由做 ReSharper 的同一个人制作。
如果你只是想一次性优化你的代码,那么无论如何你都应该选择 Ants,因为它有一个功能齐全的 15 天免费试用期,应该足以完成很多优化。
VSProfiler 随 VS 一起提供并且运行良好。如果您正在查看与内存相关的问题,那么 CLRProfiler 将是您的选择。
一般来说,我使用的方法是this。
我对代码的计时部分不太感兴趣,而是对寻找大量不必要的耗时者感兴趣,这样我就可以清理它们并完成加速。
这真的是一个不同的过程。
补充:如果我可以详细说明,我看到的典型性能问题是某些活动(几乎总是一个函数调用)正在消耗一小部分时间,比如 10%、50%、90% 等等,这并不是真正必要的- 它可以用其他东西代替或根本不做,这样就可以节省时间。
假设它是 50%。
我对调用堆栈进行随机时间样本,例如 10 个,并且该调用有 50% 的机会出现在每个调用堆栈上,因此它将出现在大约一半的样本上。因此它会引起我的注意,我会看看它正在做的事情是否真的有必要,如果没有,我会修复它以获得加速。
现在,这是测量吗?如果是这样,那真是测量不佳,因为样本数量太少了。如果 10 个样本中有 5 个显示调用,则时间比例可能在 50% 左右,给予或接受,肯定超过 10%。所以我可能不知道精确的百分比,但我绝对知道它值得修复,而且我绝对知道问题出在哪里。
(旁注:我没有计算调用次数,也没有估计调用持续时间。相反,我估计了调用的成本,即移除它会节省的成本,即它在堆栈上的小数驻留时间。另请注意我在调用级别工作,而不是函数级别。我可能关心什么函数调用在感兴趣的调用之上和之下,但除此之外,函数级别的问题,例如独占时间、调用图和递归,播放没有部分。)
这就是为什么我说衡量性能和发现性能问题,虽然它们可能是互补的,但实际上是不同的任务。