大家好,我已将 ArrayList 源代码从 java.util 包复制到我自己的包中。但我发现它比原来的 java.util.ArrayList 运行得更好。
测试代码:
@Test
public void jdkApiPerformance() {
long startTime = System.nanoTime();
java.util.ArrayList<Object> list = new java.util.ArrayList<Object>();
long costTime = System.nanoTime() - startTime;
System.out.println("jdkPerformance cost " + costTime + "ns.");
}
@Test
public void myApiPerformance() {
long startTime = System.nanoTime();
question.jdk.ArrayList<Object> list = new question.jdk.ArrayList<Object>();
long costTime = System.nanoTime() - startTime;
System.out.println("apiPerformance cost " + costTime + "ns.");
}
该测试的输出如下:
jdk性能消耗10263ns。 api 性能消耗 1244158ns。
显然,我的 api 运行速度比 JDK api 慢。
然后我为此测试添加了一个@Before 方法:
@Before
public void setUp() {
new java.util.ArrayList<Object>();
new question.jdk.ArrayList<Object>();
}
这种情况下的输出发生了变化:
jdk性能消耗9932ns。 api 性能花费 1324ns。
我的 api 运行速度比 JDK api 快!!?
对于这种情况,我真的很困惑。请帮助我。谢谢。