快速路徑
外观
![本页使用了标题或全文手工转换](http://upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
沒有或很少條目链入本條目。 (2016年4月7日) |
在程式設計中,快速路徑(英語:fast path)是指在一個程式中比起一般路徑有更短指令路徑長的路徑。有效的快速路徑會在處理最常出現的的情形上比一般路徑更有效率,讓一般路徑處理特殊情形、邊角情形、錯誤處理與其它反常狀況。快速路徑是程式最佳化的一種形式。
例子
[编辑]/* 改編程式碼 */
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 解碼走的就是結合迴圈展開的快速路徑。