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