在代码开头声明变量和在需要时声明变量(在可读性参数之外)之间的性能是否存在差异?
假设我有以下两个选项:
选项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的输入,我发现我的基准测试示例错误(现已删除),我正在进一步研究如何编写/使用基准代码。
答案 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
,这可能比在循环执行之前创建和初始化一次要慢。