• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

软件测试之Java性能

发布: 2009-3-17 10:53 | 作者: 不详 | 来源: 测试时代采编 | 查看: 18次 | 进入软件测试论坛讨论

领测软件测试网

Java语言特别强调准确性,但可靠的行为要以性能作为代价。这一特点反映在自动收集垃圾、严格的运行期检查、完整的字节码检查以及保守的运行期同步等等方面。对一个解释型的虚拟机来说,由于目前有大量平台可供挑选,所以进一步阻碍了性能的发挥。

"先做完它,再逐步完善。幸好需要改进的地方通常不会太多。"(Steve McConnell的《About performance》[16])

本附录的宗旨就是指导大家寻找和优化"需要完善的那一部分"。

 

1      基本方法

只有正确和完整地检测了程序后,再可着手解决性能方面的问题:

(1)  在现实环境中检测程序的性能。若符合要求,则目标达到。若不符合,则转到下一步。

(2)  寻找最致命的性能瓶颈。这也许要求一定的技巧,但所有努力都不会白费。如简单地猜测瓶颈所在,并试图进行优化,那么可能是白花时间。

(3)  运用本附录介绍的提速技术,然后返回步骤1。

为使努力不至白费,瓶颈的定位是至关重要的一环。Donald Knuth[9]曾改进过一个程序,那个程序把50%的时间都花在约4%的代码量上。在仅一个工作小时里,他修改了几行代码,使程序的执行速度倍增。此时,若将时间继续投入到剩余代码的修改上,那么只会得不偿失。

Knuth在编程界有一句名言:"过早的优化是一切麻烦的根源"(Premature optimization is the root of all evil)。最明智的做法是抑制过早优化的冲动,因为那样做可能遗漏多种有用的编程技术,造成代码更难理解和操控,并需更大的精力进行维护。

2      寻找瓶颈

为找出最影响程序性能的瓶颈,可采取下述几种方法:

 

1)    安插自己的测试代码

插入下述"显式"计时代码,对程序进行评测:

long start = System.currentTimeMillis();

//要计时的运算代码放在这儿

long time = System.currentTimeMillis() - start;

利用System.out.println(),让一种不常用到的方法将累积时间打印到控制台窗口。由于一旦出错,编译器会将其忽略,所以可用一个"静态最终布尔值"(Static final boolean)打开或关闭计时,使代码能放心留在最终发行的程序里,这样任何时候都可以拿来应急。尽管还可以选用更复杂的评测手段,但若仅仅为了量度一个特定任务的执行时间,这无疑是最简便的方法。

System.currentTimeMillis()返回的时间以千分之一秒(1毫秒)为单位。然而,有些系统的时间精度低于1毫秒(如Windows PC),所以需要重复n次,再将总时间除以n,获得准确的时间。

 

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: java JAVA Java 软件测试 性能

31/3123>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网