Me pregunto si hay optimizaciones adicionales que pueda implementar para mejorar la velocidad de las invocaciones reflexivas en Java. No es que el rendimiento sea prohibitivo, pero me dan escalofríos cuando pienso que algún fragmento de código en una biblioteca que estoy escribiendo se implementa en un círculo cerrado en alguna parte.¿Alguna manera de optimizar aún más la invocación del método reflectivo de Java?
Considere un método de utilidad para invocar reflexivamente:
public static Object invoke(Object targetObject, String methodName, Object[] arguments, Class<?>[] signature)
El funcionamiento básico es
return method.invoke(targetObject, arguments);
Como una optimización del rendimiento, cacheamos el método que utiliza un hash de clase, nombre del método del objeto de destino y firma (cuyo código podría usar alguna mejora) pero más allá de eso, ¿hay algo más que pueda hacer? He escuchado referencias a algunas implementaciones tempranas de InvokeDynamic que suenan prometedoras, pero supuse que probablemente aún no eran aplicables, y descarté mi propia manipulación de código de bytes porque me gustaría mantener la utilidad simple (pero rápida).
Saludos.
Guau, nunca lo supe. Haré esas pruebas de tiempo. ¿Hay alguna forma de anular el valor predeterminado 15? ¿Alguna otra forma de persuadir al compilador para que inicie temprano? – Nicholas
Simplemente configure la propiedad sun.reflect.inflationThreshold en el número que prefiera. –