最近我注意到声明一个包含 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");
}
}
如果我替换它大约需要 7 秒,这将在大约 6 毫秒new double[64]
内new double[65]
运行。如果作业分布在越来越多的线程上,这个问题就会变得更加严重,这就是我的问题的根源。
不同类型的数组(例如int[65]
或)也会出现此问题String[65]
。大字符串不会出现此问题:String test = "many characters";
,但在将其更改为时确实开始出现String test = i + "";
我想知道为什么会这样,是否有可能绕过这个问题。