在循环内部或外部声明对象?

2022-08-31 16:40:33

以下代码段是否会降低性能?

for (int i=0; i<someValue; i++)
{
    Object o = someList.get(i);
    o.doSomething;
}

或者这段代码实际上更有意义吗?

Object o;
for (int i=0; i<someValue; i++)
{
    o = someList.get(i);
    o.doSomething;
}

如果在字节码中这两者是完全等价的,那么显然第一种方法在风格方面看起来更好,但我想确保情况确实如此。


答案 1

在今天的编译器中,不,我在最小的范围内声明对象,因为它对下一个人来说更具可读性。


答案 2

引用高德纳的话,他可能引用了霍尔的话:

过早优化是万恶之源。

编译器是否会通过在循环外部定义变量来生成稍微快一点的代码是值得商榷的,我想它不会。我猜它会产生相同的字节码。

将此值与使用循环内声明正确限定变量范围可能防止的错误数进行比较...


推荐