以下代码在给定数组中查找最小值/最大值及其位置:
//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 上运行。
如您所见,在此代码中,我首先找到最大值,然后找到最大值的位置。有没有办法可以将这两个步骤的过程简化为单一的,从而加快这个过程?
更新: 我修改了此代码,使其一步处理数据,这与之前首先查找最大值然后查找索引不同。问题是如何使用预取来提高性能?