Je pensais qu'il serait plus rapide de créer directement, mais en fait, l'ajout de boucles ne prend que la moitié du temps. Qu'est-ce qui s'est passé qui a tellement ralenti?
Voici le code d'essai
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MICROSECONDS)
public class Test_newArray {
private static int num = 10000;
private static int length = 10;
@Benchmark
public static int[][] newArray() {
return new int[num][length];
}
@Benchmark
public static int[][] newArray2() {
int[][] temps = new int[num][];
for (int i = 0; i < temps.length; i++) {
temps[i] = new int[length];
}
return temps;
}
}
Les résultats des tests sont les suivants.
Benchmark Mode Cnt Score Error Units
Test_newArray.newArray avgt 25 289.254 ± 4.982 us/op
Test_newArray.newArray2 avgt 25 114.364 ± 1.446 us/op
L'environnement de test est le suivant
Version JMH : 1.21
Version de la VM : JDK 1.8.0_212, VM serveur OpenJDK 64 bits, 25.212-b04