posts - 36, comments - 419, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

小提示——避免不必要的自动装箱、拆箱

Posted on 2010-03-03 14:08 BearRui(AK-47) 阅读(2224) 评论(3)  编辑  收藏 所属分类: Java
Java 中有下面几种基本数据类型:double,float,long,int,short,char,boolean。

分别对应下面几个类包装器:Double,Float,Long,Integer,Short,Character,Boolean。

我们知道基本类型与对应的类之间可以无缝自动转换,这种转换就涉及到了JVM自动装箱和拆箱了,下面列出2个很简单装箱和拆箱的列子:

// 装箱
int i = 0;
// 把i这个基本类型的数赋给Integer类的变量,JVM就会自动装箱
Integer int = i;

// 拆箱
int j = int;

装箱和拆箱都是要花费CPU和内存资源的,所以如果没必要尽量避免使用JVM的自动装箱、拆箱。

下面用二段简单的代码测试一下自动装箱的性能影响:

代码一:
Integer result = 0;
for(int i =0;i < 50000000;i++){
result += i; // 自动装箱
}

代码二:
int result = 0;
for(int i =0;i < 50000000;i++){
result += i;
}

在本机测试第二段代码的效率比第一段代码快10倍左右。

[作者]:BearRui(AK-47)
[博客]: http://www.blogjava.net/bearrui/
[声明]:本博所有文章版权归作者所有(除特殊说明以外),转载请注明出处.
英雄,别走啊,帮哥评论下:  

精彩推荐 好文要顶 水平一般 看不懂 还需努力

评论

# re: 小提示——避免不必要的自动装箱、拆箱[未登录]  回复  更多评论   

2010-03-03 15:18 by 毛掌柜
不是尽量避免使用JVM的自动装箱、拆箱,而是避免在大循环中使用装箱/拆箱。

# re: 小提示——避免不必要的自动装箱、拆箱  回复  更多评论   

2010-03-03 16:28 by 咖啡妆
顶一下,知识点

# re: 小提示——避免不必要的自动装箱、拆箱[未登录]  回复  更多评论   

2010-03-05 10:45 by 东东
没想到一点点这样的细节对性能的影响却是那么大。细节决定成败,可见一斑啊!

只有注册用户登录后才能发表评论。


网站导航: