转自: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中添加VI插件

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

  4. Eclipse中添加PyDev插件

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

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

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

  6. Eclipse中添加web dynamic project

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

  7. 在Eclipse中安装spket插件

    spket是一个开发JavaScript和Ext等的开发工具,它可以 是独立的IDE,也可以作为 Eclipse的插件使用,下面介绍如何在Eclipse中安装spket插件, 1.首先上 官网 htt ...

  8. Eclipse中安装MemoryAnalyzer插件及使用

    Eclipse中安装MemoryAnalyzer插件 一.简介 Eclipse作为JAVA非常好用的一款IDE,其自带的可扩展插件非常有利于JAVA程序员的工作效率提升. MemoryAnalyzer ...

  9. 在eclipse中安装properties插件PropertiesEditor及设置(附图),ASCII码转换成中文

    在eclipse中安装properties插件PropertiesEditor及设置(附图),ASCII码转换成中文安装成功后ASCII还是不能转换成中文的,原因是设置里面没有把编码设置为utf8的, ...

随机推荐

  1. IDE-Sublime【2】-代码智能提示插件SublimeCodeIntel的安装

    一.打开菜单References -> Package Control 二.输入Package Control: install Package,回车 三.输入SublimeCodeIntel, ...

  2. Python-1 IDLE(Python GUI)

    #1 运行Python: 开始 -> 程序 -> Python -> IDLE(Python GUI) 或 开始 -> 输入IDLE #2 各个菜单项及基本用法的帮助: Hel ...

  3. HDU 4049 Tourism Planning(动态规划)

    Tourism Planning Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  4. Python漫谈-比较运算符和类的神奇方法

    昨天遇到一个Python问题,今天好奇试了一下 >>> a = {1:23,'ab':56} >>> b = {2:22,'ab':57} >>> ...

  5. util-C# 复杂条件查询(sql 复杂条件查询)查询解决方案

    ylbtech-funcation-util:  C# 复杂条件查询(sql 复杂条件查询)查询解决方案 C# 复杂条件查询(sql 复杂条件查询)查询解决方案 1.A,Ylbtech.Model返回 ...

  6. 性能测试_响应时间、并发、RPS的关系

    写这篇文章是为了帮自己理清一下性能测试中最最基本,却总是被人忽略的一些概念. 并发: 什么叫并发?并发不是我们理解的在loadrunner场景中设置并发数,而是正在系统中执行操作或者在系统的队列中排队 ...

  7. yo bootstrap mui 使用对比

    昨天晚上 又被问及职业发展方向,提及我的老本行css,切了几年的页面,近两年投入进css的时间屈指可数,被问及之前公司用的yo框架 对比业界内其他css 框架的优势. 1. yo模块化,碎片化  可自 ...

  8. Decorator学习笔记

    初学者,自己的理解,请各位前辈不吝指正! Decorator,装饰模式,设计模式之一,谈谈我的理解,装饰这个词在我概念中就是给某个事物加上一些美丽的外表,把它变得更加完美.但是装饰是可以随时改变的,可 ...

  9. 判断浏览器及设备的打开方式,自动跳转app中

    如果安装了APP则自动条状app,如果没安装则自动跳转下载页面 <head> 放在head中加载 <script> function redirect() { var appU ...

  10. Security:蠕虫的行为特征描述和工作原理分析

    ________________________ 参考: 百度文库---蠕虫的行为特征描述和工作原理分析 http://wenku.baidu.com/link?url=ygP1SaVE4t4-5fi ...