循環(huán)展開(kāi),英文中稱(chēng)(Loop unwinding或loop unrolling),是一種犧牲程序的尺寸來(lái)加快程序的執(zhí)行速度的優(yōu)化方法??梢杂沙绦騿T完成,也可由編譯器自動(dòng)優(yōu)化完成。
循環(huán)展開(kāi)最常用來(lái)降低循環(huán)開(kāi)銷(xiāo),為具有多個(gè)功能單元的處理器提供指令級(jí)并行。也有利于指令流水線(xiàn)的調(diào)度。
優(yōu)點(diǎn)
分支預(yù)測(cè)失敗減少
如果循環(huán)體內(nèi)語(yǔ)句沒(méi)有數(shù)據(jù)相關(guān),增加了并發(fā)執(zhí)行的機(jī)會(huì)
可以在執(zhí)行時(shí)動(dòng)態(tài)循環(huán)展開(kāi)。這種情況在編譯時(shí)也不可能掌握。
缺點(diǎn)
代碼膨脹
代碼可讀性降低,除非是編譯器透明執(zhí)行循環(huán)展開(kāi)。
循環(huán)體內(nèi)包含遞歸可能會(huì)降低循環(huán)展開(kāi)的得益
引用自wiki
https://zh.wikipedia.org/wiki/%E5%BE%AA%E7%8E%AF%E5%B1%95%E5%BC%80