测试分别在JDK 1.4.2和JDK 1.5中进行,但测试结果出乎我的意料.同样的代码,使用泛型后性能竟然有小部分的下降.
看来Sun还得加把劲,才能使JDK 1.5成为真正的“猛虎“.
/*
* 创建日期 2004-10-6
* 作者 2002PP
*/
package code.test;
import java.util.ArrayList;
import java.util.List;
/**
* @author 2002PP
* 在JDK 1.4.2下
*/
public class PerformanceTest
{
/** Creates a new instance of PerformanceTest */
public PerformanceTest()
{
}
public static void main(String[] args)
{
List list = new ArrayList();
long beforeAdd = System.currentTimeMillis();
int end = 100000;
for (int i = 0; i < end; i++)
{
list.add(new Integer(i));
}
long afterAdd = System.currentTimeMillis();
for (int j = 0; j < end; j++)
{
Integer integer = (Integer) list.get(j);
}
long afterGet = System.currentTimeMillis();
double addTime = (afterAdd - beforeAdd) / 1000.0d;
double getTime = (afterGet - afterAdd) / 1000.0d;
System.out.println(
"java.version=" + System.getProperty("java.version"));
System.out.println("Add耗时:" + addTime);
System.out.println("Get耗时:" + getTime);
}
}
结果:java.version=1.4.2
Add耗时:0.125
Get耗时:0.016
/*
* 创建日期 2004-10-6
* 作者 2002PP
*/
package code.test;
import java.util.ArrayList;
import java.util.List;
/**
* @author 2002PP
* 在JDK 1.5下
*/
public class PerformanceTest
{
/** Creates a new instance of PerformanceTest */
public PerformanceTest() {
}
public static void main(String[] args) {
List<Integer> list=new ArrayList<Integer>();
long beforeAdd=System.currentTimeMillis();
int end=100000;
for (int i=0;i<end;i++) {
list.add(new Integer(i));
}
long afterAdd=System.currentTimeMillis();
for (int j=0;j<end;j++) {
Integer integer=list.get(j);
}
long afterGet=System.currentTimeMillis();
System.out.println("java.version="+System.getProperty("java.version"));
double addTime=(afterAdd-beforeAdd) / 1000.0d;
double getTime=(afterGet-afterAdd) / 1000.0d;
System.out.println("Add耗时:"+addTime);
System.out.println("Get耗时:"+getTime);
}
}
结果:java.version=1.5.0
Add耗时:0.14
Get耗时:0.016