ANTS Performance Profiler 8:支持对Web请求、异步代码和WinRT的性能剖析
Web请求剖析使开发者能够捕获向外的HTTP请求,其中包括请求和响应的头信息。最新的版本还能剖析用C#或VB编写的Windows商店应用。此外,如果使用JavaScript、HTML5和C++,也能监控托管代码的状态。
最新的beta版以这样的方式进行了更新,可以更快速地启动剖析会话,用户也得以快速获得结果。而且开发者能够使用任何浏览器来剖析IIS、IIS Express和Web Dev Server上的ASP.NET网站。
InfoQ采访了Red Gate Software公司.NET工具部门的产品营销经理Ben Emmett,希望了解ANTS Performance Profiler 8 Beta的更多信息。
InfoQ:ANTS Performance Profiler用于什么用途?
ANTS Performance Profiler能够显示出性能瓶颈,让开发者理解并改进.NET应用程序的性能。它设计用于开发过程的任何阶段,既能作为例行检查的一部分来保证可接受的性能,也能用于发现活跃代码中急需解决的性能问题。
InfoQ:ANTS Performance Profiler与其他竞争产品有何不同?
最难解决的性能问题往往不孤立存在于应用程序的某一部分,相反它是系统不同部分相互作用的结果。ANTS Performance Profiler是唯一能够显示代码相关数据存取请求(数据库、HTTP和文件I/O)的.NET工具。利用该工具,可以简单地跟踪过多的请求,或者过多的长请求,并返回到导致这些请求的源代码。这对理解与ORM有关的性能问题特别有用,而且它提供了一定程度的理解,否则需要使用4个独立工具。
ANTS Performance Profiler对获得结果的速度也有严格要求。用户告诉了我们诊断性能问题时的最关键信息,因此为了更简单地表现这些信息,我们在新版本中重构了大部分接口。最糟糕的是,性能剖析就像打开一层套一层的放虫子的盒子那么麻烦,但不管潜在问题是简单还是复杂,ANTS Performance Profiler都能给出清晰、有意义的结果。
InfoQ:如果使用了ANTS Performance Profiler 8,应用程序就会有性能改进吗?
大多数用户都得到了重大性能改进,我们经常听到用户说他们的代码速度提升了几个数量级。当然,精确的获益情况依赖于应用,但要找到一点好处都没得到的软件可是相当困难的。
InfoQ:剖析Windows商店应用有何必要性?
速度对任何应用程序都很重要,尤其对Windows 商店应用而言,快速响应的UI非常重要,而且低效的应用会非常耗电。
因此,微软对Windows商店应用有严格的性能要求,不满足性能要求很可能会被Windows商店拒绝。包括限制应用后台使用处理器的时间(每2个小时只能使用1秒CPU时间),应用启动时间限制为5秒,还会杀掉任何阻塞UI线程超出50毫秒的应用。
要避免与这些限制产生冲突,唯一的方式就是理解应用的性能,而剖析又是理解应用性能的最佳手段。
InfoQ:剖析Web请求和异步代码有什么好处?
C#5中的Async/Await关键字简化了异步代码的编写,但理解代码在背后是如何运行的实际仍很困难。其他剖析器只显示CLR在后台为异步方法创建的底层状态机。我们很难把异步方法中完成的工作和引起它运行的方法关联起来。ANTS Performance Profiler可以给出与编写的代码直接相关的结果,而非强迫用户理解Async背后的实现。
Web请求剖析能够显示出应用程序是如何与其他Web服务器交互的。开发者可以快速识别出长期运行的、重复的或失败的请求,也可以看到关于这些请求的本质的信息。数据存取是导致性能瓶颈的常见且越来越严重的原因,我们的工具更大 的策略就是向开发者展示他们所需要知道的关于数据存取的一切信息,Web请求剖析也是该策略的一部分。
InfoQ:能否在Visual Studio 2012中使用ANTS Performance Profiler?
ANTS Performance Profiler是独立的工具。丰富的UI——特别是性能时间线——意味着它不适合在Visual Studio内运行,但大部分开发者喜欢更多的功能。所以我们提供了一个VS扩展,可以基于Visual Studio内的项目设置自动配置并启动剖析会话。
InfoQ:你能否透露一下ANTS Performance Profiler未来的路线图?
我们打算三月份发布第8版。之后我们会继续努力,并特别改进对Web开发者的支持。我们也会对它的姐妹工具ANTS Memory Profiler做出一些大的改进。
查看英文原文:ANTS Performance Profiler 8: Web request, Async code, WinRT