在开头声明变量在java中有更好的性能?

时间:2014-07-01 03:26:06

标签: java performance

在代码开头声明变量和在需要时声明变量(在可读性参数之外)之间的性能是否存在差异?

假设我有以下两个选项:

选项1:

 public void methodA () 
 {
   int  amount;
   long id;
   String name;
   //do something
 }

选项2:

 public void methodB () 
 {
   int  amount;
   //do something 
   long id;
   //do something
   String name;
   //do something
 }

在我看来,选项2更具美感和可读性,因此是我的偏好。

问:但我只是想知道与这些声明的位置相关的效果是否存在任何差异。

编辑:由于maaartinus的输入,我发现我的基准测试示例错误(现已删除),我正在进一步研究如何编写/使用基准代码。

1 个答案:

答案 0 :(得分:1)

对于这些情况,我不希望看到任何性能上的差异,至少在C ++中是这样(尽管我看到Java的真正差异会让我感到有些惊讶)。

如果您将变量的定义移动到类似循环的内容中,则会出现异常排序,并且它是一种具有重要初始化的类型:

int func() { 
    int amount;
    long id;
    string name;

    while (something) { 
        // ...
    }
    // ...    
}

VS:

int func() { 
    int amount;
    long id;

    while (something) { 
        string name;
    }
    // ...
}

在后一种情况下,需要在循环的每次迭代中创建和初始化string,这可能比在循环执行之前创建和初始化一次要慢。