Как я могу улучшить производительность Field.set (возможно, используя MethodHandles)?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как я могу улучшить производительность Field.set (возможно, используя MethodHandles)?

Сообщение Anonymous »

Я пишу код, который вызывает Field.set и Field.get много-много тысяч раз. Очевидно, это очень медленно из-за отражения.

Я хочу посмотреть, смогу ли я повысить производительность с помощью MethodHandle в Java 7. Вот что у меня есть. :

Вместо field.set(pojo, value) я делаю:

Код: Выделить всё

private static final Map setHandles = new HashMap();

MethodHandle mh = setHandles.get(field);
if (mh == null) {
mh = lookup.unreflectSetter(field);
setHandles.put(field, mh);
}
mh.invoke(pojo, value);
Однако это не работает лучше, чем вызов Field.set с использованием отражения. Я делаю здесь что-то не так?

Я читал, что использование ignoreExact может быть быстрее, но когда я попробовал его использовать, я получил исключение java.lang.invoke.WrongMethodTypeException.

Кто-нибудь успешно оптимизировал повторные вызовы Field.set или Field.get?

Подробнее здесь: https://stackoverflow.com/questions/222 ... hodhandles
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»