Necesito pasar un x/y alrededor. Solo estaba usando java.awt.Point. Hago esto mucho considerando que es la naturaleza de la aplicación, pero toneladas más lento que los arreglos normales. También traté de crear mi propio "FastPoint", que es simplemente un int x/y un constructor de clases muy simple, eso también es muy lento.Por qué los puntos son lentos
El tiempo es en milésimas de segundo.
java.awt.Point: 10374
FastPoint: 10032
matrices: 1210
public class FastPoint {
public int x;
public int y;
public FastPoint(int x, int y) {
this.x = x;
this.y = y;
}
}
jvisualvm dice Point (ya sea AWT o mi propia) están utilizando toneladas de memoria en comparación con arreglo simple int [] .
Supongo que es solo por encima de tener que crear un objeto en lugar de un um, tipo básico? ¿Alguna forma de modificar u optimizar esta clase de puntos? Ya he cambiado a las matrices int básicas (que ahora son muchísimo más rápidas), pero solo estoy tratando de entender por qué esto es lento y si hay algo que pueda hacer al respecto.
Código de prueba:
for (int i = 0; i < maxRuns; i++) {
point = new Point(i,i);
}
for (int i = 0; i < maxRuns; i++) {
a[0] = i; a[1] = i;
}
No creo que el uso de matrices en lugar de Objetos resulte en un aumento de tiempo del 900%. Tiempo en ms -> pero para hacer qué? –
for (int i = 0; i < maxRuns; i++) { point = new Point(i,i); }
for (int i = 0; i < maxRuns; i++) { a[0] = i; a[1] = i; }
– dimetambién, en su versión de matriz, no está ** instanciando ** la matriz. El costo diferente entre crear objetos/matrices y asignar valores * a * elementos en la misma matriz es * vast *. –