我是靠谱客的博主 简单白开水,最近开发中收集的这篇文章主要介绍一个有趣的java性能测试,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

早上看到两个文章,关于性能测试的一些争论的。

http://www.mkyong.com/java/while-loop-for-loop-and-iterator-performance-test-java/

http://stuq.nl/weblog/2009-01-28/why-many-java-performance-tests-are-wrong

在那个例子的结论中,说明iterator是最慢的。根据我的理解,iterator因为做了一些额外的comodification判断,所以应该是性能最差的。

而在后一篇文章中,却反驳了这个结论。

觉得好玩,就拿来自己做了个实验。结果发现了更好玩的事情。

一、测试过程

实验代码如下:

试验方法:分别注释掉其他两个循环部分,每次单独运行一种循环,每种循环方式运行三次,记录其结果。

试验记录:

For:

297, 312, 297

Loop:

297, 296, 297

Iterator:

437, 454, 453

是不是很有趣?

而且,我将三个合在一起计算,也得出了相同的结论,无论iterator放在前面还是后面。

为什么在第二篇文章中说,将iterator放到最后计算就能获得和前两种方式差不多的性能?按照第二篇文章的说法,这与JVM有关,JVM需要进行“Warm up”,那么我们换一个JVM是不是就会有不同呢?

于是,采用-server JVM重新运行,哈,结果真的不同了。

结果变成:For:172, Loop: 156, Iterator: 172

二、试验所得

看以看到,相同的机器,采用不同的JVM,其性能差异还是很大的。(-server jvm加载启动慢,但运行速度快,-client加载启动快,但运行慢)

关于不同jvm的性能问题,请参考官方网站:http://java.sun.com/docs/hotspot/HotSpotFAQ.html

此外,还发现windows xp下jvm最多能使用的内存大概在1200M左右(-Xmx1200m),而linux,能在2400m左右,可能这也是很多服务器要选择用linux的原因。(没试windows server)

不管怎么说,上面的第二篇文章还是给我们一些比较有价值的内容,比如做性能测试时的一些准则:

1、退出其他应用,用一个干净的环境运行被测试代码;

2、多次测试取平均值;

3、关注内存和服务器的使用状况;

4、关注外部系统的依赖和线程锁等问题。

最后

以上就是简单白开水为你收集整理的一个有趣的java性能测试的全部内容,希望文章能够帮你解决一个有趣的java性能测试所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部