使用TPTP对Eclipse插件进行性能剖析和调优 - 编程入门网
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 解析器对象的代码
之后再次执行分析过程,就会发现,parseContent 方法的执行时间已经被缩 减到了 0.017s 左右。通过我们的性能分析可调优,一个完成同样任务的方法, 其执行时间已经从 0.5s 降低到了 0.017s,相信最苛刻的客户也可以接受这样 的结果了吧。 本文通过一个示例说明了在 Eclipse 插件开发过程中如何使用 TPTP 进行性 能分析和调优。可以看到,使用 TPTP 可以对程序运行时的各种数据进行直观化 、图形化的分析。通过该工具的帮助, |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |