Java优化策略(一):底层优化
By 冲出宇宙 from 傲尔科技(www.hour41.com)
时间:2006-11-17
注:转载请注明作者和单位。
Java语言标准从1996年发布第一版,到2000年发布第二版,再到2004年发布第三版,java语言已经经过了3次大的扩充和改进。功能是越来越多,操作是越来越复杂。显然,性能问题也就越来越突出。本文将力图从java本身分析优化java代码的各种可能。文章的数据未经特别说明,均来自于jdk5.0版本。
1 Java基本数据类型时间分析
因为单独测试一个基本类型的变量很不精确,无论你怎么测,误差都很大。所以,我们只能大致的给出速度上的差别。
变量的访问速度和访问的类型是有很大关系的,一般我们直接使用2个变量的操作时间来衡量变量的访问速度。显然,byte + byte的速度和int + int的速度肯定是不同的。我们对以下几类基本操作进行了速度测试:加减(+,-)、乘(*)、除(/)、移位(>>,<<,>>>,<<<)和布尔运算(|,&,^)。为了保证数据的有效性,测试得到了3份结果,取平均值,得到下面的各个基本数据类型的大致时间花销比例如下表(以下均以此作为参考对象,一个时间单位在我的机器上大约是600ps,即0.6ns,也就是6e-10秒):
加减
乘
除
移位
布尔运算
byte
1.5
6
50
1.5
1
short
1.2
5.5
50
1.2
1
int
1
5
48
1
1
long
5
10
140
8.5
2
float
15
600
350
-
-
double
15
600
350
-
-
从表中我们可以看出:
1. int的运算速度最快,short次之,byte再次之,long再次之。float和double运算速度最慢。
2. 除法比乘法慢的太多,基本上除法是乘法的9倍时间。当然,除了浮点型外。根据intel cpu的参考数据,乘法计算时间是移位运算的4-5倍是比较正常的。
3. long类型的计算很慢,建议一般少使用它。
4. double运算速度和float相当;
5. 浮点的乘法比除法要慢。但是,这个结果并不能真正说明问题。这个结果只是一个一般
相关文档:
将字串 String 转换成数字类型
String 转 int
1.) int i = Integer.parseInt([String]); 或 i = Integer.parseInt([String],[int radix]);
2.) int i = Integer.valueOf(my_str).intValue();
String 转 Float
Float f = Integer.valueOf(my_str).floatValue();
String 转 float
float f=new Float(my+str).floa ......
transient这个关键字并不常见,主要应用在java的序列化方面。这里我再多说,转一篇老外的文章,很生动,欣赏吧
Be Careful With Transient Data
Java's serialization provides an elegant, and easy to use mechanism for making an object's state persistent. While controlling object serialization, we mig ......
首先要有jxl类库。
程序如下:
import java.io.*;
import jxl.*;
public class ExcelToSql {
public static void main(String args[])
{
try
{
Workbook book= Workbook.getWorkbook(new File("D:\\workspaceuse6\\foundation\\test\\com\\gres ......
谈谈Java继承中的重载,覆盖和隐藏
好久不写博客了,距离上一篇已经过了两年多了。这两年在干嘛,总之一年难尽!
前一段时间忙了两个月,忙着研究和做一些SSH架构的东西,两个月下来,收获颇丰,最近闲下来了,于是就痛快的开始玩游戏,但是不知怎么地,怎么玩都没意思,于是决定开始再好好研究研究Java吧。于是大概翻了翻 ......