最佳答案
最近我注意到,声明一个包含64个元素的数组比声明一个包含65个元素的数组要快得多(> 1000倍)。
下面是我用来测试这个的代码:
public class Tests{
public static void main(String args[]){
double start = System.nanoTime();
int job = 100000000;//100 million
for(int i = 0; i < job; i++){
double[] test = new double[64];
}
double end = System.nanoTime();
System.out.println("Total runtime = " + (end-start)/1000000 + " ms");
}
}
这运行在大约6毫秒,如果我取代 new double[64]
与 new double[65]
需要大约7秒。如果作业分布在越来越多的线程上,这个问题就会成倍地严重,这也是我的问题的根源所在。
不同类型的数组(如 int[65]
或 String[65]
)也会出现这个问题。
这个问题不会出现在大字符串中: String test = "many characters";
,但是当这个字符串改为 String test = i + "";
时就会出现
我想知道为什么会出现这种情况,是否有可能绕过这个问题。