黑马程序员技术交流社区
标题:
if-else为什么比switch的效率低?
[打印本页]
作者:
坚持525
时间:
2014-10-23 21:05
标题:
if-else为什么比switch的效率低?
在7K银行业务系统中,循环调用三类客户服务方法,老师用了switch语句,说if-else的效率比switch的低,怎么详细的解释呢?
public void start(){
Executors.newSingleThreadExecutor().execute(
new Runnable(){
public void run(){
//下面这种写法的运行效率低,最好是把while放在case下面
while(true){
switch(type){
case COMMON:
commonService();
break;
case EXPRESS:
expressService();
break;
case VIP:
vipService();
break;
}
}
}
}
);
}
复制代码
作者:
执着的桶牛
时间:
2014-10-23 22:11
switch只要判断一次type就可以case了,而if-else每一句都要判断一次,很有可能读到最后一句else那才执行。这是我比较浅显的理解··
作者:
金勇杰
时间:
2014-10-23 22:46
if-else需要遍历条件分支,直到命中条件或者分支遍历完;switch会生成一个跳转表来指向它的的case分支,程序首先比较switch的变量与最大case 常量,若大于,则跳到default分支处理;否则取得索引号为switch变量大小的跳表项的地址,程序跳到此地址执行分支语句。
作者:
践行渐远
时间:
2014-10-23 22:49
if...else...在执行到“符合要求的判断条件”之前,会将之前的所有不符合的条件判断一遍。
而switch有一个“判断条件结果”与“case value”对应的表,只需运知道判断条件的结果,直接找对应的case执行其后面的代码即可。
作者:
烟默year
时间:
2014-10-24 14:41
if else所具有的判断太多!且必须每一步都进行判断,而switch只需判断一次,再根据case的值进行简短判断,比较方便,但是比较局限,总的来说,无需纠结,适合的时候就用就ok了
作者:
cxdzh
时间:
2014-10-24 16:31
就好像岔路口,if要一条路一条路找,这条不是就跳到找下一条,可能找到最后一条才发现正确路线.如果有一万条路,可能就要找一万次
switch走到岔路口的时候,已经有路标指示每一条路都通向哪里,拿自己想要去的目标跟路标一对比,一眼就知道该走哪条路.
switch.jpg
(358.65 KB, 下载次数: 57)
下载附件
2014-10-24 16:23 上传
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2