Мне интересно, есть ли какие-либо дополнительные оптимизации, которые я могу реализовать для повышения скорости рефлексивных вызовов в Java. Не то чтобы производительность была непомерно высокой, но я начинаю нервничать, когда думаю о том, что какой-то фрагмент кода в библиотеке, которую я пишу, реализуется где-то в тесном цикле.
Рассмотрим вспомогательный метод для рефлексивного вызова:
public static Object invoke(Object targetObject, String methodName, Object[] arguments, Class<?>[] signature)
Основная операция
return method.invoke(targetObject, arguments);
В целях оптимизации производительности я кэширую метод, используя хэш класса целевого объекта, имя метода и подпись (код которого может быть улучшен), но помимо этого, могу ли я что-нибудь еще сделать? Я слышал ссылки на некоторые ранние реализации InvokeDynamic, которые звучат многообещающе, но я просто предположил, что они, вероятно, еще не применимы, и отказался от собственных манипуляций с байтовым кодом, так как хотел бы, чтобы утилита была простой. (только быстро).
Ваше здоровье.