C++ 如何在GCC中禁用/启用预取?
-O3是否在GCC中启用预取?如果是,如何禁用预取?是否有控制预取“攻击性”的选项?例如,每次迭代中要预取的数据量。根据GCC网站,当前可能的选项有: GCC中现有的数据预取支持包括:C++ 如何在GCC中禁用/启用预取?,c++,c,gcc,C++,C,Gcc,-O3是否在GCC中启用预取?如果是,如何禁用预取?是否有控制预取“攻击性”的选项?例如,每次迭代中要预取的数据量。根据GCC网站,当前可能的选项有: GCC中现有的数据预取支持包括: 通用预取RTL模式 针对多个目标的特定目标支持 一种\u内置的\u预取功能,对不支持预取或预取支持尚未支持的目标不执行任何操作 已添加到GCC中 由-fprefetch循环数组启用的一种优化,它预取循环中使用的数组 然后查看一下,-fprefetch循环数组需要明确启用(也就是说,即使使用-O3,它也没有启用
- 通用预取RTL模式
- 针对多个目标的特定目标支持
- 一种
功能,对不支持预取或预取支持尚未支持的目标不执行任何操作\u内置的\u预取
已添加到GCC中 - 由
-fprefetch循环数组
启用的一种优化,它预取循环中使用的数组
-fprefetch循环数组
需要明确启用(也就是说,即使使用-O3
,它也没有启用)
如果目标计算机支持,则生成预回迁指令
内存,以提高访问大型阵列的循环的性能
此选项可能生成更好或更差的代码;结果非常令人满意
取决于源代码中循环的结构
在-Os
级别禁用
请注意,声明中称,目前在函数声明器(C99 6.7.5.3/7)的上下文中,它没有考虑数组的C99static
关键字。这意味着“大数组”的大小及其真正含义完全由实现控制