|
Unswitching
A loop containing a loop-invariant IF statement can be transformed into an IF statement containing two loops. Example:In the example below, the IF expression is loop-invariant, and can be hoisted out of the loop. for (i = 0; i < N; i++) if (x) a[i] = 0; else b[i] = 0; After unswitching, the IF expression is only executed once, thus improving run-time performance. if (x) for (i = 0; i < N; i++) a[i] = 0; else for (i = 0; i < N; i++) b[i] = 0; © 1990-2012 Nullstone Corporation. All Rights Reserved. |