【发布时间】:2016-10-06 16:22:31
【问题描述】:
我听说我们应该使变量尽可能本地化,我同意。考虑这段代码:
int main() {
for(int i = 0; i<5; ++i) {
int temp;
std::cin >> temp;
std::cout << temp << std::endl;
}
return 0
}
temp 是for 循环的局部变量。但是,我担心在每个循环中都声明了temp,因此会使程序运行得更慢。避免这种情况并在for 循环之外声明temp 会更好吗?
int main() {
int temp;
for(int i = 0; i<5; ++i) {
std::cin >> temp;
std::cout << temp << std::endl;
}
return 0
}
【问题讨论】:
-
这对速度没有任何影响,只是在后一种情况下您将
temp放在堆栈上的时间更长。我更喜欢第一个。 -
如果它更慢,谁会发声?使用 C++ 会使您的程序变慢,您应该编写手动调整的程序集!
-
@GManNickG 这是我个人的理解,我认为多走一步
declaration会使程序运行更慢。 -
这个问题最好用基准来回答。
-
@buzhidao:我开玩笑的。您应该关注可读性而不是性能。即使这个变量位置让事情变得更慢,它也让事情更容易阅读,所以它是值得的。你的程序不需要尽可能快,它只需要足够快。在您的程序不够快后,使用分析器找出它慢的地方。保证不在这条线上。