c++ - 对于这两组连续的相同循环,是否有更有效的解决方案?

标签 c++ performance

我经常发现自己在编写这些代码片段,特别是当我必须在二维数组中执行某些操作时。

循环是一样的,只是里面的操作不同,最重要的是,最后一组的操作依赖于第一组。

我主要关心的是:对于较大的 n,m 值是否有更高效的代码?

for ( int y = 0 ; y < m ; ++y ) {
  for ( int x = 0 ; x < n ; ++x ) {
    if ( v[x][y] == z ) a = true;
  }
}

for ( int y = 0 ; y < m ; ++y ) {
  for ( int x = 0 ; x < n ; ++x ) {
    if ( a == true ) do_something( v[x][y] );
  }
}

提前致谢

最佳答案

在您描述的一般情况下,答案可能是“否”- 您暗示第二次查看的操作依赖于完成第一个循环,因此您必须这样做。

但是,在您列出的特定情况下,有两个简单的优化:

  1. 在第一个循环中快速失败:一旦 a 设置为 true,就不需要进一步循环。
  2. if ( a == true ) 移到第二个循环之外,这样它只计算一次,如果它为 false,则跳过整个循环。<

关于c++ - 对于这两组连续的相同循环,是否有更有效的解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12515073/

相关文章:

c++ - 为什么这个结构没有在函数中设置

c++ - 无法将枚举值传递给递归模板 (C++)

performance - 自动防止性能下降

r - 按日期范围和分类变量组合数据集

performance - Web 浏览器性能规则 "only 2 requests in parallel per hostname"是否仍然正确?

c++ - 为什么我们在 Visual Studio 2013 中引用 C++ 项目?

c++ - 安装了 MPI 但仍然出现链接器错误 LNK2019

c++ - 在 C++ 中传递多个函数参数的最佳实践

ios - Air iOS Flash,StageQuality.LOW 似乎不起作用

javascript - 为什么用 null 初始化对象的属性会提高速度?