【发布时间】:2013-06-17 23:00:00
【问题描述】:
取自 GCC 手册:
-funroll-loops
Unroll loops whose number of iterations can be determined at compile time or upon entry to the loop.
-funroll-loops implies -frerun-cse-after-loop. This option makes code larger, and may or may not make it
run faster.
根据我的理解,展开循环将摆脱结果代码中的分支指令,我认为它对 CPU 管道更健康。
但为什么它“可能不会让它运行得更快”?
【问题讨论】:
-
你的代码什么时候没有循环?
-
当循环体较大时,循环控制开销微不足道,而且由于展开较大的代码大小会导致指令缓存未命中。
-
在大多数大型应用程序中,循环展开几乎总是会导致代码变慢。它与缓存一起使用。当然,只有分析器会告诉您它是否适用于您的特定应用程序。
标签: c