我查看此PHP website benchmark以查看switch statement
VS if else if statement
。我看到了这个结果:
交换机和if结构之间有区别吗?拨打1'000x
*if and elseif (using ==)*
总时间:165μsviewcode *if, elseif and else (using ==)*
总时间:162μsviewcode *if and elseif (using ===)*
总时间:128μsviewcode *if, elseif and else (using ===)*
总时间:117μsviewcode *switch / caseTotal*
时间:174μsviewview代码*switch / case / default*
总时间:211μsviewcode 结果我看到if else if
更快(+ **100 %** *if, elseif and else (using ===)* Total time: 117 µsview code
)。
这个基准是真的,if, elseif and else (using ===)
作为switch语句更好更快?!
答案 0 :(得分:3)
您是否获得完全相同的结果将根据您评估的条件,设备,设置和其他因素而有所不同。但是,通常if
/ elseif
/ else
进行严格比较(===
)会优于switch
。原因是switch
uses "loose" (i.e., type-insensitive) comparison (==
),它比类型敏感的比较(===
)慢。
请记住,这些差异非常小,并且会因算法中的任何低效率而相形见绌。因此,在确定已消除其他主要瓶颈后,您应该只调整此类详细信息。
答案 1 :(得分:1)
默认PHP开关没有完全匹配。
exact match switch的一些示例。