快速业务通道

使用TPTP对Eclipse插件进行性能剖析和调优 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
od invokes 表格中,显示结果是通 过我们设置的过滤器过滤后的结果。在上面的结果中,我们可以看到,我们自己 的方法调用花费的时间都很小。由此可见,消耗时间更多的地方是在 XML 解析 的方法中。

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

时间:2011-06-16 IBM 张琦

解决性能问题并验证修改

通过对上面运行数据的分析,我们的结论是,对性能影响最大的是 XML 的解 析。而根据得到的数据,24 条商品数据的获取就已经需要 0.5s 的时间,而在 正常使用中的商品数量则会达到根本不可忍受的程度。通过对代码的分析,我们 得知目前的XML 解析使用的是 DOM 的分析方

式,而在我们的应用中只有 XML 的读操作而没有写操作。在这种方式下, SAX 的解析方式效率要更高。因此我们可以将 XML 解析部分的代码改为 SAX 方 式。

创建 ProductSAXParser 类

创建该类实现我们的ProductParser接口并继承自DefaultHandler 接口完成 大部分的分析逻辑。

实现 Parser 方法

实现 ProductParser 接口和 DefaultHandler 定义的方法完成解析逻辑 。

更改 XML 解析方式

在父类 ShopView中更改调用的解析器为我们新创建的SAX 实现。

具体的代码可参考本文附件所带的示例代码。

修改好代码并按照上面的步骤从新运行数据分析,可以看到,现在的性能已 经大为改观:

图 14. 修改代码后的运行统计视图

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

进一步的性能调优

如果你恰好足够幸运遇到了一位非常苛刻的用户,对目前的性能水平还不够 满意。那我们就需要对现在的代码进一步进行优化以提高性能。

从新进行上面的步骤,首先以所有方法的执行时间进行排序。之后按照耗时 的顺序从前往后进行分析。根据对前面几个方法的分析,我们发现,前面几个方 法耗时较多的原因也都是因为最终调用了我们的parseContent 方法。

按照上面的步骤,点击该方法以分析其具体执行状况:

图 15. 进一步分析 parseContent 方法

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

时间:2011-06-16 IBM 张琦

在该方法的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 可以对程序运行时的各种数据进行直观化 、图形化的分析。通过该工具的帮助,

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号