Lyi*_*Sky 7 c++ gcc memory-alignment compiler-optimization
引用自https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html:
-falign-标签
-falign-标签=正
将所有分支目标对齐为二次幂边界,跳过n个字节,如-falign-functions.此选项可以轻松地使代码变慢,因为它必须在通常的代码流中到达分支目标时插入虚拟操作.
-fno-align-labels和-falign-labels = 1是等效的,表示标签未对齐.
如果-falign-loops或-falign-jumps适用且大于此值,则使用它们的值.
如果未指定n或为零,则使用机器相关的默认值,该默认值很可能为"1",表示没有对齐.
在-O2,-O3级别启用.
考虑这个标志会使它失去更多的意义......有引发代码缓存未命中的后果,甚至启用意味着何时参数采用数值(1 ..)?
它没有这么说.它说可以轻松地使代码变慢.这意味着,在某些情况下,它可以使代码变慢.在其他情况下,它可以使代码更快.
对齐会导致代码运行速度变慢:
nop操作减慢了代码对齐可能导致更快地运行代码:分支预测,指令获取和上帝知道什么.
在单一的情况下,if很难说哪种效果更强.这取决于条件.
但是,对于循环,通常代码变得更快.为什么?因为慢因子只发生一次,但循环的每个循环都会更快地执行.
(我的海湾合作委员会似乎将标签与8对齐)
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |