C++ 在一个大循环的顶部定义一个变量是一种好的做法吗?

C++ 在一个大循环的顶部定义一个变量是一种好的做法吗?,c++,performance,loops,C++,Performance,Loops,我一直在想这件事。对于在非常大的循环中使用的变量,最好首先在循环顶部(外部)使用一个伪值对其进行初始化,还是应该在循环内部使用时尽可能地局部声明和初始化它 我这样问是因为这两篇与我的问题相关的帖子似乎给出了相互矛盾的答案: 有人说它应该尽可能地在本地声明——我假设这意味着变量应该在循环中声明。另一个似乎表明,除非使用其他特殊技术,否则大型循环中的本地声明会产生较差的性能(我不熟悉本例中最佳答案提供的示例)。我认为这也取决于您环境的上下文。你是说交作业上课吗?在工作中交项目?个人偏好? 如果这

我一直在想这件事。对于在非常大的循环中使用的变量,最好首先在循环顶部(外部)使用一个伪值对其进行初始化,还是应该在循环内部使用时尽可能地局部声明和初始化它

我这样问是因为这两篇与我的问题相关的帖子似乎给出了相互矛盾的答案:


有人说它应该尽可能地在本地声明——我假设这意味着变量应该在循环中声明。另一个似乎表明,除非使用其他特殊技术,否则大型循环中的本地声明会产生较差的性能(我不熟悉本例中最佳答案提供的示例)。

我认为这也取决于您环境的上下文。你是说交作业上课吗?在工作中交项目?个人偏好? 如果这是一个将程序交给其他人的情况,如果有一种预期的方法,我会这样做。

另一方面,您总是可以在循环之外创建变量,只是在进入循环之前不初始化它。这样,如果在循环之外需要它,它就可以使用。

尽可能在最内部的范围内定义变量。这样,它们只有在需要时才可用。说够了。您的编译器将处理这些琐碎的优化。您的编译器将处理这些琐碎的优化。如果您可以测量(!,启用优化!)在性能上的显著差异,请使用更快的。否则,它是最内部的作用域。@Manuel:您的编译器比您认为的要聪明得多。:)改写DeiDei在上面的评论,如果现代编译器认为变量构造会影响循环内的性能,那么它会将构造从循环中提升出来。这就是为什么它不被视为一个问题。