ASM和Javassist之间*生成的代码*的速度是否存在差异?
作者:互联网
我正在考虑Java项目的运行时字节码生成/修改.
两个重要且仍然维护的API是ASM和Javassist.
ASM是生成代码最快的,也可能是最强大的代码.但它比Javassist的用户友好性要低得多.
在我的情况下,我想提前执行字节码操作,以便在应用程序设置阶段结束时完成.因此,操纵/生成的速度并不重要.重要的是,生成的代码的速度,因为它将成为实时桌面游戏的一部分,而不是典型的网络应用程序,网络延迟完全掩盖了反射的成本.
所以我的问题是,Javassist是否在字节码中引入了一些不必要的开销,这在使用ASM时不会出现?或者,换句话说,与使用Javassist相比,在ASM级别工作是否会为生成的代码提供速度提升?
[编辑]我对这两种工具的最新版本感兴趣,并且最感兴趣的是看是否有人在同一问题上尝试了它们,并且看到了结果类的速度有任何显着差异.
解决方法:
我认为不可能为此提供一个简单的客观答案.它(我想)依赖于各个工具的版本,您生成的代码的性质,以及(最重要的)您是否使用相应的工具以及它们是否可以使用.
您应该考虑的另一件事是,遵循字节码操作路线是否可能为您提供足够的性能优势来弥补增加的软件开发和维护难题. (除了你自己以外,任何人都无法回答……)
无论如何,如果你已经尝试过“纯Java”方法并发现它给出了不可接受的性能,那么我的建议就是沿着这条路走下去.
标签:java,javassist 来源: https://codeday.me/bug/20190704/1375580.html