Объявление нескольких массивов с 64 элементами в 1000 раз быстрее, чем объявление массива из 65 элементов
Недавно я заметил, что объявление массива, содержащего 64 элемента, намного быстрее (> 1000 раз), чем объявление массива того же типа с 65 элементами.
Вот код, который я использовал для проверки этого:
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 + "";
Мне было интересно, почему это так и можно ли обойти эту проблему.