Récemment, j'ai remarqué que le fait de 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 fonctionne dans environ 6 ms, si je remplace new double[64]
avec new double[65]
, il faut environ 7 secondes. Ce problème devient d'autant plus grave si le travail est réparti sur plus et plus de threads, qui est l'endroit où mon problème provient.
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 les grandes chaînes de caractères: String test = "many characters";
, mais ne commencez produisent lorsque cela est changé en String test = i + "";
Je me demandais pourquoi c'est le cas et si il est possible de contourner ce problème.