我正在开发一个项目,其中我们正在生成一种编译为 java 的语言。我们使用的框架(xtext)在其生成的代码中大量使用了装箱。
具体来说,如果您有如下声明:
int i = 1;
int j = 2;
int k = i + j;
然后编译后的代码如下所示:
IntegerExtensions.operator_plus(((Integer)i), ((Integer)j))
现在,在我正在从事的项目中,在某些情况下,特定的基本二进制操作将非常常见(尤其是增量和比较)。
我的问题是:这是否会成为性能问题,或者 JIT(或类似的智能 JVM 功能)会简单地意识到发生了什么并解决所有问题吗?
请在发帖前阅读:我对收到“你不应该关心,让它可读”的回复不感兴趣。这段代码是生成的,我根本不关心生成的代码的可读性。我真正关心的是我们不会因此而受到重大的性能影响。
Thanks
这实际上会产生影响。当演员到Integer
发生时它将转换int
to Integer
using Integer.valueOf(int n)
方法。此方法将检查该值是否在缓存范围内(-128 到 127),如果不在,则会创建new Integer(n)
影响的大小有大有小,需要你自己去测试。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)