.NET 开发人员的简单性能分析工具





0/5 (0投票)
2004 年 11 月 25 日
6分钟阅读

53854
ANTS Profiler 允许您在安装后 5 分钟内识别 .NET 应用程序中的慢速代码行,让您可以专注于您最擅长的事情——编写代码。
ANTS Profiler by Red Gate Software
如果您从事 .NET 开发,您可能已经熟悉代码“差不多能用”,但离理想解决方案还差得很远的情况。.NET 应用程序通常运行非常缓慢或占用大量系统资源,即使它们是“按规章”编写的,这通常是因为 .NET 库背后比您想象的要复杂得多。
ANTS Profiler 是一款为 .NET 开发人员设计的性能分析工具,旨在深入了解这些以及其他相关问题。技术测试人员也使用 ANTS Profiler 来将 Bug 定位到特定的代码行,或确定优化的范围。
ANTS Profiler 的功能
ANTS Profiler 允许您在安装后 5 分钟内识别 .NET 应用程序中的慢速代码行,让您可以专注于您最擅长的事情——编写代码。该程序还可以用于
- 测量行级别和方法执行时间
- 了解您的应用程序性能
- 了解您的应用程序如何使用内存
使用 ANTS Profiler 分析应用程序
ANTS Profiler 将分析 Windows 应用程序、ASP.NET Web 应用程序、COM+ 应用程序和 .NET Web 服务。它支持用 VB.NET、C#、C++ (托管) 和 .NET 框架支持的任何其他语言 (包括 40 多种语言) 编写的应用程序。
当您开发完一个应用程序并需要查看它是否会按预期执行时,它是理想的工具。
下面的截图和解释将引导您完成性能分析,并基于一个演示 .NET 桌面应用程序 _Mandelbrot.exe_,该程序绘制一个称为曼德布洛特集合的分形数学函数。
Mandelbrot 应用程序使用两种替代方法来计算图像:“快速”和“慢速”。
本次演练展示了如何使用 ANTS Profiler 来识别应用程序中最耗时的部分。它将介绍主要功能,并向您展示如何使用 ANTS Profiler 来分析您自己的应用程序。
第一步是启动 ANTS Profiler,并使用 **Profiler Project Wizard (性能分析项目向导)** 来指定您要执行的性能分析类型。
ANTS Profiler 项目向导
我们选择“性能分析”,因为我们要调查应用程序中不同方法的执行时间,然后单击“下一步”进入向导的下一个屏幕。
现在我们需要指定要分析的 .NET 应用程序类型。由于 Mandelbrot 程序是一个桌面应用程序,我们选择 **.NET desktop application (.NET 桌面应用程序)**,然后单击 **Next (下一步)** 按钮继续。
在 **Profiler Project Wizard (性能分析项目向导)** 中的下一步允许您指定应用程序的可执行文件,因此我们浏览以找到 Mandelbrot.exe 文件。最后一步允许您指定要分析您应用程序中的哪些方法。在这种情况下,我们选择 **Only .NET methods that have source code (仅分析具有源代码的 .NET 方法)**。由于此应用程序是带有源代码的调试版本,我们只对分析具有源代码的方法感兴趣。单击 **Finish (完成)** 并退出向导后,我们就可以开始性能分析了。
将出现一个对话框,询问您是否要开始分析应用程序。单击 **Yes (是)** 将启动应用程序。
当您开始性能分析时,ANTS Profiler 会启动您的应用程序并使其处于活动状态,以便您可以运行您想要分析的应用程序的那些部分。在 Mandelbrot 集窗口中,我们单击“慢速”按钮选择慢速算法,然后单击“绘制 Mandelbrot 集”按钮绘制图像。
图像绘制完成后,我们单击关闭框以退出 _Mandelbrot.exe_ 应用程序。这将自动停止 ANTS Profiler 的性能分析,并显示您的应用程序的“结果摘要”。摘要包含有关应用程序的基本信息,以及 10 个最慢的代码行、10 个最慢的方法和 10 个带有子方法的慢速方法。您可以单击摘要中的任何链接导航到特定的方法或源代码行。当您单击摘要中任何最慢的代码行时,“源代码”面板将自动更新以显示相关的源代码和计时。我们单击“最慢代码行”列表中的方法 Mandelbrot.Algorithm.Evaluate()
。
单击摘要中的任何最慢代码行会自动更新“源代码”面板,以显示相关的源代码和计时。
在此示例中,正如红色条所示,几乎所有时间都花在了 `EvaluateUsingComplexNumbers()` 方法上。我们可以通过在“源代码”面板顶部的下拉菜单中选择它来深入显示 `EvaluateUsingComplexNumbers()` 方法的源代码。
深入查看所选方法的源代码。
在确定大部分时间都花在了 `EvaluateUsingComplexNumbers()` 方法上之后,您可能会考虑该方法是否可以通过编写成使用双精度(例如)而不是复数来使其运行得更有效率。
如果您对“摘要”中未列出的方法感兴趣,可以转到“所有方法”面板,在网格中查看所有分析过的方法。
在查看“所有方法”面板时,您可以根据需要对方法进行排序、过滤和分组。
当您单击“所有方法”或“摘要”面板中的任何方法时,“层次结构”面板会更新以显示该方法的详细信息及其父项和子项。我们单击网格中的 `Form1.DrawMandelbrot()` 方法以查找有关此方法的更多信息。从“层次结构”面板中,您可以看到命中次数为 1,因此该方法执行了一次。**子项时间**远大于**自身时间**,这表明该方法的大部分时间都花在了子方法中。
双击任何父项或子项即可深入了解确切的耗时情况。
我们看到大部分时间都花在了 `Algorithm.Evaluate()` 方法上,该方法执行了 115104 次,相当于图像中的每个像素一次。我们可以双击“子项”列表中的 `Algorithm.Evaluate()` 使其成为当前显示的方法。然后双击其子项列表中的 `Algorithm.Evaluate UsingComplexNumbers()`,可以看到时间花在了五个复数运算上。
一个重要的开发工具
ANTS Profiler 是一款简单的 .NET 性能分析工具,它以简单快速的方式为您提供所需信息。可以优化适当的代码段,从而提高性能并降低硬件要求。它易于使用,生成的分析结果使任何 .NET 开发人员都能轻松理解瓶颈或问题所在。
评估 ANTS Profiler,在您的应用程序中试试它是否适合您 - 下载一个免费、功能齐全、完全支持的 14 天试用版。