循环展开

循环展开,英文中称(Loop unwinding或loop unrolling),是一种牺牲程序的尺寸来加快程序的执行速度的优化方法。可以由程序员完成,也可由编译器自动优化完成。

循环展开最常用来降低循环开销,为具有多个功能单元的处理器提供指令级并行。也有利于指令流水线的调度。

优点

分支预测失败减少
如果循环体内语句没有数据相关,增加了并发执行的机会
可以在执行时动态循环展开。这种情况在编译时也不可能掌握。

缺点

代码膨胀
代码可读性降低,除非是编译器透明执行循环展开。
循环体内包含递归可能会降低循环展开的得益
引用自wiki
https://zh.wikipedia.org/wiki/%E5%BE%AA%E7%8E%AF%E5%B1%95%E5%BC%80

你可能感兴趣的:(循环展开)