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