如何知道哪个指令花费的时间最长? (以提高我的计划表现)

时间:2009-09-14 12:15:56

标签: c#

我需要知道如何获得每个指令的持续时间,以便我可以维护代码以提高程序的性能。

9 个答案:

答案 0 :(得分:13)

使用分析器。如果您有Visual Studio Team System,则包含一个。否则,请查看ANTSdotTrace

答案 1 :(得分:2)

你正在寻找的是一个我相信的探查器:)

请参阅:ProfilerList of Performance Analysis Tools

答案 2 :(得分:1)

您需要一个应用程序分析器,它会准确显示代码需要多长时间。

答案 3 :(得分:1)

您需要使用分析器来完成此任务。它存在几个分析器,有些是免费的。

我的偏好是Red Gate Ants

答案 4 :(得分:1)

我认为你不应该达到衡量性能瓶颈的指示级别。微优化可能是有害的。你应该进行功能分析。如果您使用的是VS2005或2008,则可以使用

  1. 效果向导
  2. CLR profiler
  3. 分析您的功能。

    另外,我个人建议使用Ants Profiler

答案 5 :(得分:1)

由于Ants和dotTrace非常好但是商业工具(我不会称它们很贵 - 它们物有所值),我最近听说EQATEC Profiler是免费的。没有尝试,因为没有时间,但也许你想尝试一下。

(不,我不隶属于他们)

答案 6 :(得分:0)

如果您正在运行一个应用程序并且想要使用分析器(.net或数据库)来提高其性能,那么必须使用.DotTrace和Ants是有名的。

如果您使用的是SQL Server,则SQL Server Profiler是一个很好的工具,可以在应用程序的服务器端跟踪和查看正在发生的事情。

如果你想决定哪种方法更好用,你可以使用ILDASM将你的代码反汇编到IL,看看幕后发生了什么虽然这不是一项简单的任务,但我认为值得。

答案 7 :(得分:0)

您可能还需要查看FxCop,可能会提供更多 vauge 提示,以了解可以改进的内容。 (哦,它是免费的!)

答案 8 :(得分:0)

我很惊讶没有人提到这一点,但如果你想了解个别说明的费用,请查看herehere

单个指令的成本因CPU而异,但AMD和英特尔(以及任何其他CPU制造商)都记录了这一点。

问题在于确定指令的成本并不简单。您需要考虑很多指标:存在延迟,无论是流水线(全部还是部分),指令有多大(影响指令缓存)等等。因此,如果您正在编写单个真正性能敏感函数,而您自己编写程序集,或者仔细阅读编译器生成的ASM以查找并消除低效率,则此信息才真正有用。如果你对CPU的工作原理有所了解的话。

但是在你达到这一点之前,你应该使用其他人建议的探查器。这可以帮助您缩小花费时间的地方,以及需要优化的地方。