4

我正在对二维数组进行一些计算,需要以 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
   }
}

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

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

4

1 回答 1

5

如果您使用内联函数,您的编译器很可能会为您执行内联,从而为您提供所需的结果。

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

如果您想对此更加科学,并且此功能需要大量时间,那么我建议您投资分析器。在开源方面,有些人会推荐gprof。在专有方面,有些人(包括我自己)会推荐英特尔的 VTune

于 2013-08-02T15:54:32.330 回答