c++ - 在循环体内声明一个变量有什么缺点吗?

标签 c++ c++11

<分区>

假设我们有一个迭代多次的循环:

for (int i=0; i < 1000000; ++i) {
  int s = 100;
  s += i;
  cout << s;
}

我们只在循环体内使用 s,所以理想情况下我们希望在那里声明它,这样它就不会污染封闭的命名空间。

我想知道这是否有任何缺点。例如,是否会产生性能成本,因为程序在每次迭代时都重新声明 s

最佳答案

概念上变量是在每次迭代时构建和销毁的。

但是它会影响性能吗?嗯,你可以查一下你的情况right here .删除第 7 行的 int 以在循环局部变量和函数局部变量之间切换。
结论:没有任何区别。组装是一样的!

因此,只需使用您的代码中有意义的内容即可。如果每次迭代需要一个对象,则每次都创建一个对象。优化器比你想象的更聪明。如果这还不够,您会返回分析数据和仔细调整,而不是广泛的指导方针。

关于c++ - 在循环体内声明一个变量有什么缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43573774/

相关文章:

c++ - 没有通过引用看到对 vector 最后一个元素的操作的影响

c++ - 无法推断模板参数/'n' 重载均无法隐藏所有参数类型

c++ - Ofstream 比 cout 快? ||存储速度快于视觉输出

c++ - 可扩展的 SFINAE 条件覆盖

c++ - 函数调用缺少参数列表警告

c++ - 即使禁用了优化,Visual Studio 也会优化吗?

c++ - 静态变量初始化的线程安全

c++ - 如何正确创建单例对象并在 C++ 中使用它?

c++ - 用于 C++ 类变量的 OpenMP

c++ - C++ 特性有标准限制吗?