跳转到内容

快速路径

本页使用了标题或全文手工转换
维基百科,自由的百科全书

程式设计中,快速路径(英语:fast path)是指在一个程序中比起一般路径有更短指令路径长英语Instruction path length的路径。有效的快速路径会在处理最常出现的的情形上比一般路径更有效率,让一般路径处理特殊情形、边角情形、错误处理与其它反常状况。快速路径是程序优化英语Program optimization的一种形式。

例子

[编辑]

在以下的 UTF-8 解码的代码[1]中:

/* 改編程式碼 */
if (*_s < 0x80) {
    while (true) {
        unsigned long value = *(unsigned long *) _s;
        if (!next_8bytes_are_ascii(value))
            break;
        _p[0] = (value & 0xFFu);
        _p[1] = ((value >> 8) & 0xFFu);
        _p[2] = ((value >> 16) & 0xFFu);
        _p[3] = ((value >> 24) & 0xFFu);
        _p[4] = ((value >> 32) & 0xFFu);
        _p[5] = ((value >> 40) & 0xFFu);
        _p[6] = ((value >> 48) & 0xFFu);
        _p[7] = ((value >> 56) & 0xFFu);
    }
    s++;
    *p++ = ch;
    continue;   // 繼續外層的大迴圈
}

if (*_s < 0xC2) {
    /*  不合法序列
        \x80-\xBF -- 接續位元組
        \xC0-\xC1 -- 假 0000-007F */
    ...
}

if (ch < 0xE0) {
    /* \xC2\x80-\xDF\xBF -- 0080-07FF */
    ...
}

if (ch < 0xF0) {
    /* \xE0\xA0\x80-\xEF\xBF\xBF -- 0800-FFFF */
    ...
}

if (ch < 0xF5) {
    /* \xF0\x90\x80\x80-\xF4\x8F\xBF\xBF -- 10000-10FFFF */
    ...
}

ASCII 的 UTF-8 解码走的就是结合循环展开的快速路径。

参考资料

[编辑]