Sid*_*Bob 8 c++ memory-management intel pragma prefetch
英特尔有助于提供预取编译指示; 例如
#pragma prefetch a
for(i=0; i<m; i++)
a[i]=b[i]+1;
Run Code Online (Sandbox Code Playgroud)
将由a
编译器确定预先获取一定数量的循环周期.
但是如果a
不是一个数组而是一个[]
被覆盖的类呢?如果operator[]
一个简单的数组访问,可以预取仍然以这种方式使用?
(据推测这个问题也适用于此std::vectors
).
找出答案的一种方法是尝试并查看装配。如果有其他的话,只需对带有或不带有编译指示的基准进行基准测试即可。但是,我不确定预取编译指示是否是您想要的:
\n\n\n\n\n\n\n仅 Intel\xc2\xae Itanium\xc2\xae 处理器支持预取编译指示。
\n
您真的是为安腾而写的吗?
\n\n在 x86/x64 系统上,硬件预取器已经可以很好地处理诸如顺序内存访问之类的简单循环。所以手动预取可能根本没有帮助。
\n\n请参阅此处的预取示例:预取示例?
\n