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