Estoy trabajando con una interfaz que toma el tipo Objeto como entrada. Esto es desafortunado para mí ya que tengo datos primitivos que a veces necesito pasar a través de la interfaz. Esto, por supuesto, me obliga a boxear.Evitar el boxeo al pasar en la matriz primitiva de elemento único
El perfilado ha mostrado que esta área es un punto de acceso en el código. Por lo tanto, estoy explorando alternativas para hacer que esta área sea más rápida.
Una idea que tuve hoy para esto es preasignar una matriz primitiva estática, y almacenar el valor primitivo en esto, y luego pasar la matriz (y luego en la implementación de la interfaz, tomar el doble de la array
He escrito algunos códigos para probar esto. Para valores razonablemente altos (10 millones), veo que el método de matriz es SIGNIFICATIVAMENTE más rápido. A medida que aumente el número de iteraciones de mi prueba, los dos converge.
Me pregunto si alguien ha pensado en este enfoque antes, y si hay alguna sugerencia sobre cómo comparar este bien.
Ejemplo de código:
Double data = Double.valueOf(VALUE);
inst.interface(data);
//inside interface(Object object)...
Double data = (Double) object;
double d = data.value();
vs ...
doublearray[0] = VALUE;
inst.interface(data);
//inside interface(Object object)...
double[] data = (double[]) object;
double d = data[0];
Gracias! RB
¿por qué no tener una variable global 'doble' entonces? – irreputable