(c ++)使用相同的代码以4种不同的方式遍历数组

时间:2013-08-02 15:52:31

标签: c++ arrays

我正在对2D阵列进行一些计算,需要以4种不同的方式遍历数组

for(int i=0; i < array_size; i++) {
   for(int j=0; j < array_size; j++) {
      #do some computation around [i][j] element
   }
}

for(int i = array_size - 1; i >= 0; i--) {
   for(int j=0; j < array_size; j++) {
      #do the same computation around [i][j] element
   }
}


for(int i=0; i < array_size; i++) {
   for(int j=array_size - 1; j >= 0; j--) {
      #do the same computation around [i][j] element
   }
}



for(int i = array_size - 1; i >=0; i--) {
   for(int j = array_size - 1; j >= 0; j--) {
      #do the same computation around [i][j] element
   }
}

问题是,首先,计算的代码很长,将来也可能会改变。其次,阵列很大,所以性能也是一个问题。

我一直想知道是否有任何方法可以避免代码重复并保持性能。由于将代码提取到函数中可能会降低性能。

1 个答案:

答案 0 :(得分:5)

如果你使用内联函数,你的编译器很可能会为你做内联,从而为你提供你想要的结果。

inline void work(int i, int j) { ... }

如果你想对此更加科学,并且这个功能需要花费很多时间,那么我建议你投资一个分析器。在开源方面,有些人会推荐gprof。在专有方面,有些人(包括我自己)会推荐Intel's VTune