Я рассматриваю генерацию/модификацию байт-кода во время выполнения для проекта Java.
Два важных и до сих пор поддерживаемых API — это ASM и Javassist.
ASM является самым быстрым в генерации кода и, вероятно, самым мощным. Но он также намного менее удобен для пользователя, чем Javassist.
В моем случае я хочу выполнить манипулирование байт-кодом заранее, чтобы оно было завершено в конце этапа настройки приложения. Так что скорость манипуляции/генерации не критична. Что важно, так это скорость сгенерированного кода, потому что он будет частью настольной игры в реальном времени, а не типичного веб-приложения, где сетевые задержки полностью скрывают затраты на отражение.
Итак, мой вопрос: вводит ли Javassist какие-то ненужные накладные расходы в байт-код, которых не было бы при использовании ASM? Или, выражаясь по-другому, работа на уровне ASM даст мне прирост скорости в сгенерированном коде по сравнению с работой с Javassist?
[EDIT] Меня интересует новейшая версия обоих инструментов, и в основном интересно посмотреть, пробовал ли кто-нибудь их оба для одной и той же проблемы и видел ли какую-либо существенную разницу в скорости результирующих классов.