Son zamanlarda, 64 öğe içeren bir diziyi bildirmenin, 65 öğeli aynı tür diziyi bildirmekten çok daha hızlı (> 1000 kat) olduğunu fark ettim.
İşte bunu test etmek için kullandığım kod:
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");
}
}
Değiştirirsem yaklaşık 7 saniye sürer new double[64], new double[65]bu yaklaşık 6 ms içinde çalışır . İş gittikçe daha fazla iş parçacığına yayılırsa bu sorun katlanarak daha şiddetli hale geliyor, benim sorunum da buradan kaynaklanıyor.
Bu sorun, int[65]veya gibi farklı dizi türlerinde de ortaya çıkar String[65]. Bu sorun büyük dizelerde ortaya çıkmaz: String test = "many characters";ancak bu değiştirildiğinde ortaya çıkmaya başlar.String test = i + "";
Neden böyle olduğunu ve bu sorunu aşmanın mümkün olup olmadığını merak ediyordum.
System.nanoTime()için tercih edilmelidirSystem.currentTimeMillis().