首页 > 后端开发 > C++ > '__builtin_prefetch”实际加载了多少数据?

'__builtin_prefetch”实际加载了多少数据?

Susan Sarandon
发布: 2024-11-01 16:30:05
原创
990 人浏览过

How Much Data Does

“__builtin_prefetch:解密其读取范围”

“__builtin_prefetch”是一个 C/C 编译器内部函数,用于指示编译器预加载数据到高速缓存中,从而减少访问该数据的延迟。然而,它的确切行为,特别是在预取结构内容方面,可能会令人困惑。

有关“__builtin_prefetch”提供的文档指出它预取行缓存,但该行缓存的大小可以因处理器而异。在预取整个结构的情况下,“__builtin_prefetch”通常只会预取结构的前几个缓存行。

例如,让我们考虑给定代码中的循环:

for (int i = from; i < to; i++)
{
    particle* from = con[i].Pfrom;
    particle* to = con[i].Pto;
    // Assume particle has 8 double values
}
登录后复制

在此循环中,“__builtin_prefetch (con[i].Pfrom)”只会预取粒子结构的前 8 个双精度值。如果粒子结构包含超过 8 个双精度值,则不会预取剩余的值。

要预取其他值,可以使用多个“__builtin_prefetch”内在函数。例如,“__builtin_prefetch (con[i 3].Pfrom)”将预取位于 con[i 3].Pfrom 的粒子结构的前 8 个双精度数。

但是,使用“__builtin_prefetch”非常重要明智地。过度使用实际上会降低性能。建议衡量“__builtin_prefetch”对代码的影响,并且仅在可提供显着优势的情况下使用它。

现代处理器和编译器已显着改进了缓存处理。结果,“__builtin_prefetch”的有效性降低了。但是,它在某些情况下仍然有用,特别是对于复杂的数据结构或以可预测模式访问的大型数组。始终建议使用基准来确定“__builtin_prefetch”是否值得。

以上是'__builtin_prefetch”实际加载了多少数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板