ECLIPSE中添加TPTP插件
转自: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插件的更多相关文章
- 关于在eclipse中添加windowbuilder插件的问题
最近在学习GUI,发现我的Eclipse中没有windowbuilder插件,之后按照百度搜索,按照网上教程,去安装时,发现下载网页已经更新,造成了很多问题, 不过问题不大,我已经找到了解决方法: 安 ...
- eclipse中添加aptana插件(html.css.js自动提示)
一.关于aptana aptana是一款很不错的插件,本人主要用于安装此类插件,在eclipse中用于编辑javascript代码,html代码,和css代码的,因为其有自动纠错功能,当然安装后的问题 ...
- eclipse中添加svn插件
在eclipse中使用svn查看能非常方便的对代码进行查看和更新提交操作,能及时知道代码的更新状态. 在eclipse中如果要使用svn,只能使用svn插件的方式进行. 插件地址:http://sub ...
- 怎么在Eclipse中添加VI插件
下载地址 Vi插件下载位置 怎么安装? 将下载下来的zip文件进行解压,然后把对于的目录下的文件分别复制到eclipse目录下的plugins 和features目录下: 注册 在eclipse根目录 ...
- Eclipse中添加PyDev插件
思路 1.启动Eclipse, 2.点击Help->Install New Software... 3.在弹出的对话框中,点Add 按钮. 4.Name中填:Pydev, Location中填h ...
- Eclipse中添加MyEclipse插件
下载准备: 下载myeclipse7.0:http://downloads.myeclipseide.com/downloads/products/eworkbench/7.0M1/MyEclipse ...
- 在eclipse中添加svn插件
1.点击菜单栏中的help选项,然后选择Install New Software,然后点击ADD,输入: name:subclipse url:http://subclipse.tigris. ...
- 在MyEclipse和Eclipse中添加Hibernate开发工具
一.插件准备 MyEclipse需要的插件:HibernateTools-3.2.4.zip Eclipse需要的插件:jbosstools-4.2.3.Final_2015-03-26_22-41- ...
- Eclipse中添加web dynamic project
因为我的eclipse版本是kepler service release 2,所以我用了这个链接,http://download.eclipse.org/releases/helios/ 参考链接: ...
随机推荐
- Python学习路程day7
多态 class Animal: def __init__(self, name): # Constructor of the class self.name = name def talk(self ...
- (spring-第13回【IoC基础篇】)PropertyEditor(属性编辑器)--实例化Bean的第五大利器
上一篇讲到JavaBeans的属性编辑器,编写自己的属性编辑器,需要继承PropertyEditorSupport,编写自己的BeanInfo,需要继承SimpleBeanInfo,然后在BeanIn ...
- php大力力 [006节]初步接触认识phpMyAdmin
phpMyAdmin 2015-08-22 php大力力006. 初步接触认识phpMyAdmin 以下是phpAdmin网络截图: 这是通过MAMP一键安装的. php中MyAdmin的使用-猿代码 ...
- iOS9的适配
1.大部分社交平台接口不支持https协议. 问题描述:在iOS9下,系统默认会拦截对http协议接口的访问,因此无法获取http协议接口的数据.对ShareSDK来说,具体表现可能是,无法授权.分享 ...
- 【转】博弈问题及SG函数(真的很经典)
博弈问题若你想仔细学习博弈论,我强烈推荐加利福尼亚大学的Thomas S. Ferguson教授精心撰写并免费提供的这份教材,它使我受益太多.(如果你的英文水平不足以阅读它,我只能说,恐怕你还没到需要 ...
- CODEVS1073 家族 (并查集)
一道裸的并查集,练练手不错. program CODEVS1073; var i,j,m,n,q,x,y,k1,k2,z:longint; f:..] of longint; function fin ...
- WPF Step By Step 控件介绍
WPF Step By Step 控件介绍 回顾 上一篇,我们主要讨论了WPF的几个重点的基本知识的介绍,本篇,我们将会简单的介绍几个基本控件的简单用法,本文会举几个项目中的具体的例子,结合这些 例子 ...
- [转]BEHAVOUR TREE2
上次提到了一些行为树的基本概念,包括行为节点,控制节点(选择,序列,并行),这次来更多,更深入的讨论行为树的一些东西,如果对行为树不是很了解,请参看这里. 一. 关于选择节点的讨论 我们说过选择节点的 ...
- LeetCode Kth Largest Element in an Array (快速排序)
题意: 在一个无序的数组中第k大的数是多少? 思路: 按照快排的思路,如果每次分成两段后,设为L和R.如果R>=k ,则答案在右边集合,否则在左边集合. 这里用了3位取中法.注意快排别给写死循环 ...
- 应用Druid监控SQL语句的执行情况(转)
Druid是什么? Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBo ...