Como posso melhorar o desempenho do Field.set (talvez usando MethodHandles)?

Estou escrevendo um código que chamaField.set eField.get muitos milhares de vezes. Obviamente, isso é muito lento por causa da reflexão.

Quero ver se posso melhorar o desempenho usandoMethodHandles em Java7. Até agora, aqui está o que eu tenho:

Ao invés defield.set(pojo, value), Estou fazendo:

private static final Map<Field, MethodHandle> setHandles = new HashMap<>();

MethodHandle mh = setHandles.get(field);
if (mh == null) {
    mh = lookup.unreflectSetter(field);
    setHandles.put(field, mh);
}
mh.invoke(pojo, value);

No entanto, isso não parece ter um desempenho melhor do que a chamada Field.set usando reflexão. Estou fazendo algo errado aqui?

Eu li isso usandoinvokeExact poderia ser mais rápido, mas quando eu tentei usar isso eu tenho umjava.lang.invoke.WrongMethodTypeException

Alguém conseguiu otimizar chamadas repetidas para Field.set ou Field.get?

questionAnswers(1)

yourAnswerToTheQuestion