Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javajit和装箱_Java_Optimization_Jit - Fatal编程技术网

javajit和装箱

javajit和装箱,java,optimization,jit,Java,Optimization,Jit,我遇到了一位同事编写的代码: return new Integer(_hash).compareTo(other.getHash()); 我想知道Java是否可以优化这一点,避免装箱,只需比较两个整数。它是这样做的(在Java 7或8中),还是继续创建一个整数并每次调用compareTo()。那你就完全可以避免任何拳击了。简单 一般来说,JITC不会试图完全“优化”对象的创建。。。谢谢@HotLicks我不确定目前的技术水平,但是已经有很多关于JDK7的论文,例如(我还没有读过)。一般来说,J

我遇到了一位同事编写的代码:

return new Integer(_hash).compareTo(other.getHash());

我想知道Java是否可以优化这一点,避免装箱,只需比较两个整数。它是这样做的(在Java 7或8中),还是继续创建一个整数并每次调用compareTo()。那你就完全可以避免任何拳击了。简单

一般来说,JITC不会试图完全“优化”对象的创建。。。谢谢@HotLicks我不确定目前的技术水平,但是已经有很多关于JDK7的论文,例如(我还没有读过)。一般来说,JITC必须确保在解释器下发生的任何副作用也会发生在JITCed代码中。因此,虽然对象分配可以更改为堆栈分配,并且构造函数可以内联,但实际的对象构造几乎肯定会发生。在上述情况下,JITC必须认识到这一非常特殊的情况,因为必须阻止两个对象的创建才能实现好处。一般来说,JITC的作者都在和鳄鱼搏斗,而且有更大的事情要做(混合隐喻)。@HotLicks不确定我是否同意这一点。在转义分析之后,这里的构造函数基本上是一个写入堆栈内存。。显然,寄存器分配器应该处理这个问题。有时必须检查装配,但这似乎是合理可行的。