【发布时间】:2020-02-28 15:16:16
【问题描述】:
一遍又一遍地重新声明同一个变量会影响代码的性能吗?
int i,a;
for(i=0;i<10;i++)
{
// Some operations with a
}
V/S
int i;
for(i=0;i<10;i++)
{
int a;
// Some operations with a
}
【问题讨论】:
-
完全不正确的假设。由于as-if rule,没有任何区别。
-
在第二个示例中,
int a;的存储很可能只为函数的每次调用分配一次。在for循环中定义它会限制编译器允许的对它的访问(其范围),即使它实际存在于代码块之外。 -
我不明白你所说的“调用堆栈”是什么意思。
-
通常这样做是为了限制
a的范围,而不是节省堆栈空间。 -
让编译器来处理:不用担心微优化。
标签: c performance memory time