我正在考虑为一个Java项目进行运行时字节码生成/修改。
两个重要且仍在维护的API是ASM和Javassist。
ASM在生成代码方面最快,也可能是最强大的。但它比Javassist不太用户友好。
在我的情况下,我想要在应用程序设置阶段之前执行字节码操作,以便在结束时完成。因此,操作/生成速度并不关键。关键的是生成的代码速度,因为它将成为实时桌面游戏的一部分,而不是典型的Web应用程序,在其中网络延迟完全隐藏了反射的成本。
所以我的问题是,Javassist是否会在字节码中引入一些不必要的开销,而在使用ASM时不存在?或者,换句话说,与使用Javassist相比,使用ASM级别的工作是否会为我提供生成代码的速度提升?
[编辑] 我对这两个工具的最新版本感兴趣,并且主要想看看是否有人在同一个问题上尝试了它们两个,并且在生成的类的速度方面看到了任何显着差异。