利用TPTP对Java程序进行性能测试[2]

发表于:2010-03-05来源:作者:点击数: 标签:性能测试javaJAVAJava程序
利用 TPTP 对 Java 程序进行性能测试[2] 性能测试工具 设置 java 程序参数 通过Profile As--Java Application菜单打开如下对话框。对于这个例子来说,通过程序参数来设置包含产品信息的xml文件的文件夹路径,设置程序参数为x: /myPath/products,其中x:/myPat

  利用TPTPJava程序进行性能测试[2]   性能测试工具

  设置java程序参数

  通过Profile As-->Java Application菜单打开如下对话框。对于这个例子来说,通过程序参数来设置包含产品信息的xml文件的文件夹路径,设置程序参数为x: /myPath/products,其中x:/myPath/products文件夹是你从本文中提供的products.zip下载解压到本地的路径。

  设置性能测试过滤器

  下一步是通过设置性能测试选项作为收集执行信息的方法。设置这些选项,可以点击Launch configuration properties 向导中的Monitor页,选择一组适合的性能选项。提示:一组性能测试过滤器是能够被复用的。设置性能测试过滤器的目的是为了在连续相同的测试中复用,或者是在需要相同的性能测试信息时共享这些过滤器。以下的各个步骤描述了怎样创建一个用于剖析Product catalog的应用的过滤器。我们将创建一个叫ProductFilterSet,用于剖析包名前缀为com.sample.product 的包。

  1. 在Monitor页中选择Execution Time Analysis选项,

  我们选择的Execution Time Analysis选项能作用于product catalog 程序的连续运行期间,在下一次运行该程序的时候,可以跳过设置性能测试过滤器的步骤。

  2. 选择编辑选项

  2a.选择Collect boundary classes excluded by the filter set选项,设置Boundary class depth的值为3。通过选择这个选项,你指明你想收集的信息是:符合过滤条件的方法以及被该方法调用深度不超过3层的方法。例如:假设我们设置的过滤器去收集MyMethod的信息,并且过滤出方法:M1,M2,M3,M4。

  如果调用栈是如下执行的:MyMethod>M1>M2>M3>M4,基于在2a中设置的过滤条件,性能解析器将显示如下的调用栈:MyMethod>M1>M2>M3,将不显示最后一级调用M3>M4(因为超过了3层)。

  3.选择要剖析的类

  在Moniter页中,选择Java Profiling项,然后双击或者单击编辑按钮,打开The Filter Set 向导。利用The Filter Set 界面来选择你想剖析的类,这里已经预先定义了一组可用的过滤器,就本例来说,你可以通过下面几步创建一个新的过滤器:

  3a)单击Add..按钮,在弹出的对话框中输入ProductFilterSet,然后单击OK。

  3b)使用Contents of selected filter set列表中的Add按钮增加两个过滤器

  运行程序

  可以通过在Launch Configuration wizard向导中点击OK按钮来运行Product catalog 程序,在询问是否切换到Profiling and Logging透视图时选择Yes,你将在Console视图中看到

  提示:TPTP性能测试工具允许你和你所剖析的程序之间交互。你能暂停、恢复监听,运行垃圾收集回收对象引用或者中止程序的运行。

  使用Execution Statistics视图分析性能危险点  软件测试

  使用Execution Statistics视图去分析性能危险点,在Profiling Monitor视图中,右键-->Open with > Execution Statistics可以打开Execution Statistics视图,下图显示的是按照方法调用的累积时间排序的,累积时间是指该方法花费的所有时间,包含调用其他方法的消耗的时间。

  Execution Statistics 显示在最上方的方法:main(java.lang.String[]), readData(java.lang.String) 和createParser() 消耗了最多的执行时间。看见main和readData方法在列表中(的位置)是不奇怪的,因为前者是程序执行的开始点,后者从其名字可以看出它从xml 文件中读取产品信息。

  使我们觉得奇怪的是方法createParser() ,它仅仅创建了用于解析xml文件的SAX parser 实例就花费了如此高的执行时间。该方法的执行时间占了整个应用的执行时间的42.96%,Execution Statistics 帮助我们分析这个方法是性能优化的潜在的地方。

原文转自:http://www.ltesting.net