Duff`s Deviceが反復回数を減らす

708 ワード

「Duff`s Device」は、1回の反復で実際に複数回の反復を行うようにする循環体展開技術である.Jeff Greenbergは「Duffs Device」コードを元のC実装からJavaScriptに移植する最初のものと考えられる.
コード:
var iterations = Math.floor(items.length / 8),
    startAt = items.length % 8,
    i = 0;

do {
    switch (startAt) {
        case 0:
            process(items[i++]);
        case 7:
            process(items[i++]);
        case 6:
            process(items[i++]);
        case 5:
            process(items[i++]);
        case 4:
            process(items[i++]);
        case 3:
            process(items[i++]);
        case 2:
            process(items[i++]);
        case 1:
            process(items[i++]);
    }
    startAt = 0;
} while (--iterations)