Jef*_*eff 5 java performance boxing jit xtext
我正在开发一个项目,我们正在编写一个编译为java的语言.我们使用的框架(xtext)在其生成的代码中大量使用了拳击.具体来说,如果您有以下声明:
int i = 1;
int j = 2;
int k = i + j;
Run Code Online (Sandbox Code Playgroud)
然后编译的代码看起来像:
IntegerExtensions.operator_plus(((Integer)i), ((Integer)j))
Run Code Online (Sandbox Code Playgroud)
现在,在我正在研究的项目中,某些情况下特定的基本二进制操作将非常普遍(特别是增量和比较).
我的问题是:这在性能方面是一个问题,还是JIT(或类似的智能JVM功能)只是意识到发生了什么并解决了所有问题?
请在发布之前阅读:我对收到回复说"你不应该关心,让它变得可读"不感兴趣.生成此代码,我根本不关心生成的代码的可读性.我所关心的是,我们不会因此受到重大影响.
谢谢
这实际上会产生影响。当发生转换时,Integer它将转换int为IntegerusingInteger.valueOf(int n)方法。此方法将检查该值是否在缓存范围内(-128 到 127),如果不在,则会创建new Integer(n)
影响的大小有大有小,需要你自己去测试。
| 归档时间: |
|
| 查看次数: |
429 次 |
| 最近记录: |