快速路径
外观
![本页使用了标题或全文手工转换](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 解码走的就是结合回圈展开的快速路径。