java系统性能优化手册PPT课件
- 格式:pptx
- 大小:179.37 KB
- 文档页数:10
1.底层篇1.1.基本数据类型时间分析int的运算速度最快,short次之,byte再次之,long再次之。
float和double运算速度最慢。
除法比乘法慢的太多,基本上除法是乘法的9倍时间。
当然,除了浮点型外。
根据intel cpu的参考数据,乘法计算时间是移位运算的4-5倍是比较正常的。
long类型的计算很慢,建议一般少使用它。
double运算速度和float相当;浮点的乘法比除法要慢。
但是,这个结果并不能真正说明问题。
这个结果只是一个一般性的,在特殊情况下,乘法还是比除法快,比如:floatA * floatB 仍然是比floatA / (1/floatB)快。
从实际的数据结果来讲,乘法的时候,乘数越小速度越快,特别是在乘数比3小的时候,乘法时耗接近20,大于4的时候,几乎都是600的时耗。
除法恰好相反,除数大于1的时候,时耗一般都是350,可是,当除数小于1的时候,时耗就变成了700了。
对于大家关心的移位和乘除2的问题,jdk5.0已经做了部分处理。
即“var *=2”和“var <<=1”耗费一样。
但是,除法并没有进行这类处理,即“var /= 2”耗费和基本的除法一样。
1.2.类和接口调用时间分析1.2.1.类的创建虽然面向对象思想已经深入人心,但他在带来快捷方面的编程风格的时候,也带来了低下的效率。
在Java中,反应最快的是Object类(这也是显然的),建立一个新的Object类时耗仅仅为20单位。
而一个空类(即没有声明任何Methods和Fields)的建立时间则增加到了惊人的400单位。
如果再给类增加一些字段的话,时间耗费并没有特别大的增加,每增加一个int类型字段大概增加30个单位。
仅仅就创建时间来说,内嵌的类型都有不错的表现。
比如,创建一个int数组(仅仅包含一个元素)的时间只比创建一个Object对象的时间多一倍。
当然,如果你创建的数组对象包含1000个元素的话,其创建时间显然还会加上内存管理的时间了,它的时间大概是1万个时间单位。