我正在决定是否使用if
/else
vs switch
/case
在我正在编写的一个 PHP 网站中,我想知道使用其中之一是否有任何好处,或者是否在某些情况下打算使用其中一种而不是另一种。
有趣的问题,因为在编译语言(甚至是 JIT 语言)中,使用 switch 语句时会获得很好的性能增益,因为编译器可以构建跳转表并在恒定时间内运行。甚至可以优化字符串的切换,因为字符串可以被散列。然而,从我读到的内容来看,php 似乎没有进行这样的优化(我假设是因为它是逐行解释和运行的)。
关于交换机优化的精彩 .Net 文章:如果与开关速度 https://stackoverflow.com/questions/445067/if-vs-switch-speed
关于 php 的解释,PHP 文档说:http://php.net/manual/en/control-structs.switch.php http://php.net/manual/en/control-structures.switch.php
了解 switch 语句是如何执行的很重要
以避免错误。 switch语句逐行执行
(实际上,逐条陈述)。一开始没有代码
被执行。仅当发现 case 语句的值满足以下条件时
匹配 switch 表达式的值 PHP 是否开始执行
的陈述。 PHP 继续执行语句直到结束
switch 块的时候,或者第一次看到break 语句时。如果
你不在 case 语句的末尾写一个 break 语句
列表中,PHP将继续执行以下情况的语句。
我还发现一些参考资料都表明 php 中的 if / else 语句实际上可能比 switch 语句更快(奇怪)。如果你编译 php,这可能不是真的(我从未做过,但显然这是可能的)。
http://www.fluffycat.com/PHP-Design-Patterns/PHP-Performance-Tuning-if-VS-switch/ http://www.fluffycat.com/PHP-Design-Patterns/PHP-Performance-Tuning-if-VS-switch/
特别是这篇文章,http://php100.wordpress.com/2009/06/26/php-performance-google/ http://php100.wordpress.com/2009/06/26/php-performance-google/,很有趣,因为作者比较了 if 和 switch 的内部 php 代码,它们几乎是相同的。
无论如何,我想说,无论哪种方式,任何性能提升都是微不足道的,所以这更多的是用户的偏好。 If 语句更灵活,您可以更轻松地捕获值的范围(尤其是大范围)以及进行更复杂的比较,而 switch 语句恰好与一个值对齐。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)