英特尔友善地提供了一个预取指示Pragma;例如:
#pragma prefetch a
for(i=0; i<m; i++)
a[i]=b[i]+1;
将会预取一定数量的循环周期,由编译器确定,以提高性能。预取的是a
数组。
但如果a
不是一个数组,而是一个重载了[]
运算符的类呢?如果operator[]
只是简单地访问一个数组,那么预取还能这样使用吗?
(可以想象这个问题同样适用于std::vector
。)