声明包含 64 个元素的多个数组比声明包含 65 个元素的数组快 1000 倍
最近我注意到声明包含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毫秒内运行,如果我用它替换它大约需要7秒。如果作业分布在越来越多的线程上,则此问题将成倍地严重,这就是我的问题的根源。new double[64]
new double[65]
不同类型的数组(如 或 )也会出现此问题。对于大字符串,不会出现此问题:,但当它更改为int[65]
String[65]
String test = "many characters";
String test = i + "";
我想知道为什么会这样,是否有可能规避这个问题。