首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

应用 TPTP 对 Eclipse 插件进行性能剖析和调优

2012-11-05 
使用 TPTP 对 Eclipse 插件进行性能剖析和调优简介:?TPTP(Eclipse Test & Performance Tools Platform Pro

使用 TPTP 对 Eclipse 插件进行性能剖析和调优

简介:?TPTP(Eclipse Test & Performance Tools Platform Project) 是 Eclipse 基金下的一个子项目,用于提供基于 Eclipse 的软件辅助工具,从测试到运行监控,几乎涵盖了软件开发的各个阶段。本文主要介绍其中的性能分析工具并给出一个实例介绍如何在 Eclipse 插件开发项目中使用性能剖析工具进行性能分析及调优。

?



我们的任务就是对这个插件的工作进行性能分析与调优。

插件安装成功后,就可以在工具栏上看到以 profile 模式运行的图标。点击该图标并选择以 Eclipse 应用的方式运行该程序。

接下来是运行配置界面,可以在这里进行运行方式、分析规则等配置。


图 4. Profile 模式下的运行配置
应用 TPTP 对 Eclipse 插件进行性能剖析和调优

可以看到,这个运行配置窗口与普通运行窗口的不同就是多了一个 Monitor 标签。在这里可以设置我们要分析的方式和添加分析时的过滤器以便将我们并不关心的类的运行情况从分析报告中过滤掉。

在分析方式上,因为我们要对性能,即程序运行的时间进行分析,所以如上图所示,我们选择使用“Execution Time Analysis”分析方式。

接着选择“Edit Options”对运行参数进行设置:


图 5. 编辑 Profile 选项
应用 TPTP 对 Eclipse 插件进行性能剖析和调优

点击上面的 “Add” 按钮增加一个新的过滤器,取名为 MyShop。点击下面的“Add” 按钮增加过滤规则。过滤器支持通配符。上图中我们的过滤器规则为分析 以“net.faquir” 开头的 包中的所有方法并忽略其他任何代码中的任何方法。

点击 “Next” 按钮进行下一步配置。因为我们需要进行性能分析的程序是 Eclipse 插件程序,在我们的视图被调用之前进行分析数据的收集是没有任何意义的。所以我们可以取消“在程序启动时自动开始监控”的选项以便到执行我们需要进行性能分析的时候再打开这个数据收集选项以排除不必要的干扰数据。


图 7. 设置启动选项
应用 TPTP 对 Eclipse 插件进行性能剖析和调优

完成之后选择“Finish”回到主配置窗口,然后按“OK”以执行程序。

可以看到,此阶段监控服务的状态是暂停的:


图 8. 监视器运行状态
应用 TPTP 对 Eclipse 插件进行性能剖析和调优

接着,进行我们的操作。选择 “browse” 按钮并选择存放我们产品信息文件的目录。产品信息文件可在本文附件中找到。点击 OK 后,可以看到,如图 2 所示,产品信息已经从文件中获取出来了。

操作完成后,我们也获得了我们需要的数据,可以将需要分析的程序关闭,回到前面的 Profilling Monitor 视图中进行具体的数据分析工作。

在 UML 序列图的分析中,不仅可以看到类之间的调用关系,其调用过程中的性能瓶颈也会被标记出来。


图 11. 以 UML 序列图展示类之间调用关系
应用 TPTP 对 Eclipse 插件进行性能剖析和调优

我们 MyShop 插件的运行结果如上图所示。可以看到,getProductDir 方法耗时最长。而该方法的作用是打开一个文件选择对话框,等待用户的选择,等选择完成后再关闭对话框。因此其时中包含了等待用户选择的部分。这当然应该在我们的性能分析中排除在外。除此之外耗费时间最长的是 parseContent 方法。该方法用于从包含产品信息的 XML 文件中获取真正的产品信息数据。双击该方法查看该方法调用的详细数据。


图 13. 方法调用详细数据
应用 TPTP 对 Eclipse 插件进行性能剖析和调优

需要注意的是,在下面的 Selected method invokes 表格中,显示结果是通过我们设置的过滤器过滤后的结果。在上面的结果中,我们可以看到,我们自己的方法调用花费的时间都很小。由此可见,消耗时间更多的地方是在 XML 解析的方法中。

可以看到,XML 解析方法的运行时间已经由 0.5s 左右缩短到了大约 0.057s。

在该方法的 Selected method incokes 部分,我们可以看到,createParser 耗费了大部分的运行时间。我们可以从两方面入手进行性能调优,一是改善该段代码执行逻辑以增强性能,例如我们的第一轮修改中,从 DOM 的分析模式改为 SAX 模式。另外就是从代码的调用次数上入手,减少性能不佳代码的调用次数。例如在这里,通过进一步分析,具有性能瓶颈的方法用于产生用于 XML 分析的解析器,逻辑非常简单,但却被调用了 24 次。所以我们就可以从减少次数的角度来增强性能。

分析代码,我们可以创建一个 SAX 解析器的私有变量以在每次解析 XML 的过程中重用同一个解析器对象。以如下的方式修改代码:


清单 1. 重用 SAX 解析器对象的代码

privateSAXParser _saxParser;  protectedSAXParser createParser() throwsParserConfigurationException, SAXException  {     if(_saxParser == null)  {         SAXParserFactory f = SAXParserFactory.newInstance();         f.setValidating(false);  _saxParser = f.newSAXParser();  }     return_saxParser;  } 

?

之后再次执行分析过程,就会发现,parseContent 方法的执行时间已经被缩减到了 0.017s 左右。通过我们的性能分析可调优,一个完成同样任务的方法,其执行时间已经从 0.5s 降低到了 0.017s,相信最苛刻的客户也可以接受这样的结果了吧。

本文通过一个示例说明了在 Eclipse 插件开发过程中如何使用 TPTP 进行性能分析和调优。可以看到,使用 TPTP 可以对程序运行时的各种数据进行直观化、图形化的分析。通过该工具的帮助,性能调优以及程序运行时状态的分析其实是一件非常容易的事情。

<!-- CMA ID: 471284 --> <!-- Site ID: 10 --> <!-- XSLT stylesheet used to transform this file: dw-article-6.0-beta.xsl -->

?

参考资料

查看 Eclipse 的 TPTP 项目首页,了解 TPTP 的最新动态。

查看 Eclipse 的 Eclipse 文档库首页,获取更多关于 Eclipse 插件开发和 TPTP 的技术文章。

访问 developerWorks Open source 专区获得丰富的 how-to 信息、工具和项目更新以及最受欢迎的文章和教程,帮助您用开放源码技术进行开发,并将它们与 IBM 产品结合使用。

热点排行