在Java中,创建对象或获取对象值会更昂贵吗?

所以说例如我正在经历一个'if'块,在这个块中,我将一些数字的值与一个常量进行比较。 它会像这样更昂贵:

if( foo.getOb().getVal() == CONST_0 )
{
     ....
}
....
if( foo.getOb().getVal() == _CONST_N )
{
     ....
}
else
     ....

要么:

int x = foo.getOb().getVal();
if( x == CONST_0 )
{
     ....
}
....
if( x == _CONST_N )
{
    ....
}
else
    ....

我知道这可能看起来像一个愚蠢的问题。 我认为第二个实现速度更快/效率更高,但我很好奇为什么。 我一直在想着最后几分钟的原因,因为我对Java的知识有点欠缺,所以无法真正提出任何事情。

非常感谢任何答案!


在我看来,你应该使用switch语句,在这种情况下,你不需要担心它。

switch (foo.getOb().getVal()) {
    case CONST_0:
        .... 
        break;
    case CONST_N:
        .... 
        break;
    default:
        .... 
        break;
}

这不是创建对象。 您正在创建对该对象的引用。

您正在保存一些方法调用(使用Java,它们非常高效)

差异可以忽略不计。 编译器不会不太可能优化这些事情。


假设getOb()getVal()只是返回引用而不做计算,那么这两个代码片断在功能上是等效的。 这意味着它们之间没有真正明显的区别。

在使用哪种形式之间进行辩论归结为风格和偏好问题,并与先发优化(因为您可能花费大量时间争论做出对应用程序性能没有可衡量影响的更改)争论不休。

链接地址: http://www.djcxy.com/p/39581.html

上一篇: In Java, is it more expensive to create an object, or get the objects value?

下一篇: C++ STL container and in