0

以下代码在给定数组中查找最小值/最大值及其位置:

 //Finding the array index//
 #include "stdafx.h"
 #include <iostream>
 #include <iterator>
 #include <list>
 #include <algorithm>
 using namespace std;
 int main () {
 int A[4] = {0, 2, 1, 1};
 const int N = sizeof(A) / sizeof(int);
 cout << "Index of max element: "
 << distance(A, max_element(A, A + N))
 << endl;
 return 0;
 }

我想改进二维数组的代码并利用预取

所以我的数据现在是这样的:

     A[3][10] = { {3,7,2,9,39,4,9,2,19,20}, 
                  {3,7,2,9,33,4,22, 2,19,21}, 
                  {3,7,2,36,33,4,9,2,19,22} 
                };

在实际情况下,数据会更多。我真的会在这里获得预取的任何好处吗?如果是这样,我该怎么做?还有任何编译器指令可以指示编译器预取 A 中的数据吗?

编辑:

我需要整个二维数组的最大值以及相应的索引。将在 x86、Intel i3、Windows 7 上运行。

如您所见,在此代码中,我首先找到最大值,然后找到最大值的位置。有没有办法可以将这两个步骤的过程简化为单一的,从而加快这个过程?

更新: 我修改了此代码,使其一步处理数据,这与之前首先查找最大值然后查找索引不同。问题是如何使用预取来提高性能?

4

0 回答 0