Re: [請益] php跑判斷式的效能?
其實 switch 跟 if 主要差別還是在維護、除錯的方便性。
若是有興趣的話,下載 PHP 的原始碼解開看...
追蹤 PHP 5.3.5:
1. Zend/zend_language_scanner.l 可以看到
<ST_IN_SCRIPTING>"if" {
return T_IF;
}
<ST_IN_SCRIPTING>"switch" {
return T_SWITCH;
}
2. Zend/zend_language_parser.y 可以看到
| T_IF '(' expr ')' { zend_do_if_cond(&$3, &$4 TSRMLS_CC); }
statement { zend_do_if_after_statement(&$4, 1 TSRMLS_CC); }
elseif_list else_single { zend_do_if_end(TSRMLS_C); }
| T_SWITCH '(' expr ')' { zend_do_switch_cond(&$3 TSRMLS_CC); }
switch_case_list { zend_do_switch_end(&$6 TSRMLS_CC); }
3. Zend/zend_compile.c 可以看到
void zend_do_if_cond(...)
void zend_do_if_after_statement(...)
void zend_do_if_end(...)
void zend_do_switch_cond(...)
void zend_do_switch_end(...)
真如此講究的話,可以追蹤 === 跟 == ,很有趣。 :p
--
▄▆▇▍ ▄▆ ▇ ▏▎▍▌▋▊▉ φkaishin
▌▄ ▋▊ ▄▏▎ ▎▏ │
┼── ▄–█▏─▂── ▁▁─▇▍▍▁▏ ──▂───◢── JoeHorn┬┼
□ ▄▄▄ꈠ ▇ ▄ ▂▄█▎ ▄▄▃▉ ▇ ▄ ◢▆◢ ▄▎▄▅ └┼
┼┐▄▄▄▄ ▂ ▅▃◤▃▆◢▂◤▄ ▏▃▂ ▅▃▆◢ ▄█▄▆▋▄ □
┼┴ ▄ ▄▆─▄▂▂-◣▄▂▄-▄▃──▄▌▄▂▂─ ▃◤-▄ ─▊▅◤─┼
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.37.129.239
推
01/14 15:17, , 1F
01/14 15:17, 1F
推
01/15 02:30, , 2F
01/15 02:30, 2F
→
01/15 09:57, , 3F
01/15 09:57, 3F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):
4
8
PHP 近期熱門文章
PTT數位生活區 即時熱門文章
6
14