转自:http://blog.csdn.net/sinboy/article/details/1536625

程序在实际应用当中,大数据量时对系统本身的影响是一个不得不面对的问题。

最早在使用Jbuilder时,它有个相配套的工具叫Optimize Suite,可以在JBuilder中使用,也可独立使用,用它可以监测运行的并发线程数据、内存的使用情况等,也是不款非常不错的性能测试套件。可惜随着JBuilder的衰落它也渐渐消失在人们的视线中了。我记得还有一个独立的性能测试工具叫JProfiler,从名字上就能看出它是用来干么的,当时好象也是倍受好评的一款工具。

Eclipse崛起后,插件迅速流行,我也非常喜欢这种“按需分配”的模式,用到什么就添加什么。以前对性能这方面的意识不是很强,但上次出现一次教训后,慢慢变的重视起来。人总是在经历过一些教训之后才会长成色:)

首先想到是从Eclipse官方网站找,果然没有让我失望。ECLIPSE官方有一个Test & Performance Tools Platform (TPTP)的项目,很早就有了,只是以前没有关注过,现在最新的稳定版本已经是4.3.1了。可以进行程序执行时间的统计分析、内存的监控、对象调用的分析等,我现在都关注的是的功能是Execution Statistics(程序执行统计),可以显示程序当中开销最大的10个方法也就是系统的瓶颈。找到了瓶颈,我们就可以想方设法去解决它了,或优化或重写,对症下药,不用再无的放失。

其实TPTP的使用很简单,但在下载使用的时候一定要注意TPTP插件本身的版本和ECLIPSE版本的配合,否则很可能会重蹈我连试好几次都无法正常运行的覆辙。下面简单说一下安装和使用的步骤:

1.从ECLIPSE官方网站下载TPTP4.3.1版本,和它相应的ECLIPSE版本是3.2.2,如图一所示:

图一

2.安装完成后,重新启动ECLIPSE,必要的话请加上参数-clean进行清理。如果安装正常,在标准按钮一栏会显示TPTP的快捷图标,如图二所示:

图二

3.选择你要进行性能测试的工程的主类,在该主类上用右键点击,菜单上会出现Profile as,再选择java application。当然,如果你的工程不是JAVA应用程序,而是web程序,你还需要安装相应的web插件WTP,选择Profile on serve即可,如下图三所示:

图三

4.之后,会显示一个选择监控项目的窗口,它默认的监测项目有三个:内存分析(Basic Memory  Analysis)、执行时间分析(Executeion Time Analysis)、代码覆盖(Method Code Coverage),如下图四所示:

图四

5.点击确定按钮,程序开始运行,同时监控也将开始,ECLIPSE会切换的监控视图,如下图五所示:

图五

6.双击监项目,可以看到具体的监控结果,如下图六所示:

图六

7.从上面监控结果来看,很清楚地知道了系统中开销最大的现个方法,奇怪的是这个几在平时看来并不特别的方法怎么会有如此大的开销呢?仔细分析代码发现,每次用数据过来之后,在处理之前和处理完毕后都要判断发送者是移动号码还是联通号码,在判断号码时又调用了字符串全角转半角的方法quan2ban(String str)。噢,原来如此呀。虽然在全转半时考虑到了全角数字的情况,但实际系统的运行过程,这一可能性几乎不会出现,所以可以把quan2ban()方法从中移除,开销大大减少。isAllChinese()方法也是如此,代码调整后再次测试,结果如下图七所示:

图七

8.虽然有了大大的改进,但这两个方法好象还被多次调用,问题何在?对方法的调用情况做进一步的分析得知,在程序初始化词典库时,会用过该两方法,但初始化并不影响系统的正常数据处理,可以先把初始化的过程屏蔽掉,再次测试,结果如下图八所示:

图八

9.很奇怪,开销最大的竟然是四个类的构造函数,真的是一头雾水,构造函数里并没有执行什么操作,怎么可能会有如此大的开销呢?况且我刚刚对对象的创建做过测试,几乎是不花费多少开销的。经过仔细研究发现,日志的输出我用到了LOG4J这个实用的工具,并且为了使日志输出能够按照我自定义的方式进行,每个类在创建时我都调用了一这样一句:PropertyConfigurator.configure(ConfParam.LOG4J_PROP_CONF);难道是加载配置参数的原因?把这一句屏蔽掉,问题果然消除。一一对开销比较大的方法进行分析优化,使系统的处理能力有了很大的改观。

在TPTP的学习使用当中,我主要用到了执行时间分析这一项监控功能,因为我系统的主要问题出现在执行的效率上,如果是内存开销的问题,你可以把注意力集中到内存分析上。当然TPTP还有其它很强大的功能,有待进一步的学习和研究。

提示:使用TPTP进行性能测试时,系统启动的时间和运行的时间都可能远远超出正常运行的时间,我原来正常1分钟完成初始化的过程,启用TPTP后竟然长达10几分钟,晕。。。

ECLIPSE中添加TPTP插件的更多相关文章

  1. 关于在eclipse中添加windowbuilder插件的问题

    最近在学习GUI,发现我的Eclipse中没有windowbuilder插件,之后按照百度搜索,按照网上教程,去安装时,发现下载网页已经更新,造成了很多问题, 不过问题不大,我已经找到了解决方法: 安 ...

  2. eclipse中添加aptana插件(html.css.js自动提示)

    一.关于aptana aptana是一款很不错的插件,本人主要用于安装此类插件,在eclipse中用于编辑javascript代码,html代码,和css代码的,因为其有自动纠错功能,当然安装后的问题 ...

  3. eclipse中添加svn插件

    在eclipse中使用svn查看能非常方便的对代码进行查看和更新提交操作,能及时知道代码的更新状态. 在eclipse中如果要使用svn,只能使用svn插件的方式进行. 插件地址:http://sub ...

  4. 怎么在Eclipse中添加VI插件

    下载地址 Vi插件下载位置 怎么安装? 将下载下来的zip文件进行解压,然后把对于的目录下的文件分别复制到eclipse目录下的plugins 和features目录下: 注册 在eclipse根目录 ...

  5. Eclipse中添加PyDev插件

    思路 1.启动Eclipse, 2.点击Help->Install New Software... 3.在弹出的对话框中,点Add 按钮. 4.Name中填:Pydev, Location中填h ...

  6. Eclipse中添加MyEclipse插件

    下载准备: 下载myeclipse7.0:http://downloads.myeclipseide.com/downloads/products/eworkbench/7.0M1/MyEclipse ...

  7. 在eclipse中添加svn插件

    1.点击菜单栏中的help选项,然后选择Install New Software,然后点击ADD,输入: name:subclipse     url:http://subclipse.tigris. ...

  8. 在MyEclipse和Eclipse中添加Hibernate开发工具

    一.插件准备 MyEclipse需要的插件:HibernateTools-3.2.4.zip Eclipse需要的插件:jbosstools-4.2.3.Final_2015-03-26_22-41- ...

  9. Eclipse中添加web dynamic project

    因为我的eclipse版本是kepler service release 2,所以我用了这个链接,http://download.eclipse.org/releases/helios/ 参考链接:  ...

随机推荐

  1. 让一个小Div(子)在大Div(父)中垂直水平都居中

    方法1: .parent {          width:800px;          height:500px;          border:2px solid #000;          ...

  2. 安装VMware Tools找不到内核头文件

    http://blog.csdn.net/bobbat/article/details/38568885 安装VMware Tools,解决无法找到kernel header path的问题 安装 V ...

  3. 黑马程序员——【Java基础】——String、StringBuffer和基本数据包装类

    ---------- android培训.java培训.期待与您交流! ---------- 类String---------------------------------------------- ...

  4. 算法----Magic Index

    给定一个数组 A,如果 某个下标 i, 满足 A[i] = i, 则 i 称为 Magic Index. 现在假设 A 中的元素是递增有序的.且不重复,找出 Magic Index. 更进一步,当数组 ...

  5. php中数据库的操作

    1.Mysql客户端介绍,命令行:这种方法不友好. 2.Mysql客户端介绍,Web形式的可视化界面(phpMyAdmin) 优点:只要有浏览器就可以操作数据库 缺点: a)创建数据库

  6. 【LeetCode OJ】Pascal's Triangle

    Prolbem Link: http://oj.leetcode.com/problems/pascals-triangle/ Just a nest-for-loop... class Soluti ...

  7. Arrays Multi

    <!DOCTYPE html><html><body><?php$cars = array   (   array("Volvo",22, ...

  8. CODEVS1001 舒适的路线 (并查集)

    对所有边从大到小排序,枚举最大边,O(m)验证,用并查集维护图是否联通. program CODEVS1001; ; maxn=; INF=; type arr=record u,v,w:int64; ...

  9. HttpServlet详解

    http://www.cnblogs.com/panjun-Donet/archive/2010/02/22/1671290.html Servlet的框架是由两个Java包组成:javax.serv ...

  10. cookie 和 session 机制

    cookie机制 Cookie实际上是Web服务端与客户端(典型的是浏览器)交互时彼此传递的一部分内容,内容可以是任意的,但要在允许的长度范围之内.客户端会将它保存在本地机器上(如IE便会保存在本地的 ...