php - switch 的性能比 if else 性能高很多吗?
高洛峰
高洛峰 2017-04-11 10:32:13
[PHP讨论组]

switch 的性能比 if else 性能高很多吗?
我看到有很多地方switch直接取代了 if else

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(4)
阿神

switch case,因为是直接跳转,只判断一次,if else if条件比较多的时候,可能会判断到最后一个才符合.简单来说就是switch case一次,if else if>=一次

PHPz

首先,楼上说case只判断一次个人觉得不严谨,当你有多个case的时候,需要去判断每一个case啊!除非你传入的参数进了第一个case就是只判断一次,且你还需要在case中写上break,否则依然是每个都要去执行。

其次,if elseif 判断逻辑上跟swich case是一样的,在这一点上不存在谁更好。所以它们的性能是一样的,不信可以去google上看下。

最后,swicth 什么时候会有优势呢?
就是当使用函数结果作为判断依据的时候
看下面代码

switch(some_func()) {
    case 1: ... break;
    case 2: ... break;
}

if(some_func() == 1) {}
elseif(some_func() == 2) {}

补充说明下:上面代码 if else不是最佳实践,就跟我们在for循环中,循环条件用count一样。我们可以使用中间变量在前面做一个赋值操作。这样就不会每次去调函数,提升效率。

怪我咯

要求:输入一个整数 n,如果 1<=n<=20 输出 n2,如果 21<=n<=50 输出 n3,如果 51<=n<=90 输出 n4,其他输出 n5。

好了,用 if else 实现和 switch 实现,看看谁的效率高。

PHP中文网

性能是一样的。
至于有很多地方switch直接取代了 if else,是因为当很多条件的时候,switch流程控制看起来简洁很多。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号