favor comparar dos formas de configuración/devuelve una matriz:forma preferida de ajuste/matrices que regresan
static public float[] test_arr_speeds_1(int a) {
return new float[]{ a, a + 1, a + 2, a + 3, a + 4, a + 5,
a + 6, a + 7, a + 8, a + 9 };
} // or e.g. field = new float... in method
static public float[] test_arr_speeds_2(int a) {
float[] ret = new float[10];
ret[0] = a;
ret[1] = a + 1;
ret[2] = a + 2;
ret[3] = a + 3;
ret[4] = a + 4;
ret[5] = a + 5;
ret[6] = a + 6;
ret[7] = a + 7;
ret[8] = a + 8;
ret[9] = a + 9;
return ret;
} // or e.g. field[0] = ... in method
Tanto generar códigos de bytes distintos y ambos pueden ser decompiled a su estado anterior. Después de verificar los tiempos de ejecución a través del generador de perfiles (iteraciones de 100M, entornos imparciales y diferentes), el tiempo del método _1 es de aprox. 4/3 el tiempo de _2, aunque ambos crean una nueva matriz y ambos configuran cada campo a un valor dado. Los tiempos son insignificantes la mayor parte del tiempo, pero esto todavía me molesta, ¿por qué _1 es visiblemente más lento? ¿Alguien puede verificarme/confirmarme/explicarme de una manera razonable, respaldada por JVM?
¿Las representaciones de bytecode correspondientes son lo suficientemente breves como para publicarlas aquí? –
Los tiempos promedio de las llamadas 1000 * 1000000 son las mismas para ambos métodos, al menos para mí. – IchBinKeinBaum
estimado votante, ¿podría explicar cómo esta pregunta * no * muestra el esfuerzo de investigación y cómo es * no útil * para otros usuarios, especialmente si los votos muestran lo contrario? – vaxquis