Récemment, j'ai remarqué que déclarer un tableau contenant 64 éléments est beaucoup plus rapide (> 1000 fois) que de déclarer le même type de tableau avec 65 éléments.
Voici le code que j'ai utilisé pour tester ceci:
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");
}
}
Cela dure environ 6 ms, si je remplace new double[64]par new double[65]cela, cela prend environ 7 secondes. Ce problème devient exponentiellement plus grave si le travail est réparti sur de plus en plus de threads, d'où mon problème.
Ce problème se produit également avec différents types de tableaux tels que int[65]ou String[65]. Ce problème ne se produit pas avec des chaînes volumineuses:, String test = "many characters";mais commence à se produire lorsque cela est modifié enString test = i + "";
Je me demandais pourquoi c'est le cas et s'il est possible de contourner ce problème.
System.nanoTime()devrait être préféréSystem.currentTimeMillis()à l'analyse comparative.