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