我正在决定是否在我正在编写的PHP网站中使用if/ elsevs switch/ case我想知道使用其中一个是否有任何好处,或者是否存在某个用于使用其中一个而不是另一个的某些实例.
Sam*_*Sam 24
有趣的问题是因为在编译语言(或甚至是JIT的语言)中,使用switch语句会有很好的性能提升,因为编译器可以构建跳转表并在恒定时间内运行.甚至可以优化对字符串的切换,因为可以对字符串进行哈希处理.然而,从我所读到的,似乎php没有进行这样的优化(我假设因为它被解释并逐行运行).
关于交换机优化的伟大.Net文章:如果与Switch Speed相关
关于php的解释,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://php100.wordpress.com/2009/06/26/php-performance-google/这篇文章很有意思,因为作者比较了if vs switch的内部php代码,它们几乎相同.
无论如何,我会说任何性能增益都是无关紧要的,所以更多的是用户偏好.如果语句更灵活,您可以更轻松地捕获值范围(特别是大范围)以及进行更复杂的比较,而switch语句则排列为一个值.
| 归档时间: |
|
| 查看次数: |
6964 次 |
| 最近记录: |