社区
Java SE
帖子详情
请教为什么switch的效率要比if else 高?
一头头
2009-01-14 02:49:37
请教为什么switch的效率要比if else 高?
希望从编译原理的角度分析 谢谢哇
...全文
4470
30
打赏
收藏
请教为什么switch的效率要比if else 高?
请教为什么switch的效率要比if else 高? 希望从编译原理的角度分析 谢谢哇
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
30 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Calon Mo
2011-09-26
打赏
举报
回复
[Quote=引用 2 楼 cydp007 的回复:]
switch 只判断一次.. 就 case 了.
if else 要判断很多次. 比如一个结果你要在 最后的一个 else里面.. 是不是要把前面的if全判断一遍呢?
[/Quote]
难道switch不是一个个比较的吗?你需要的数字也是在最后的那个case呢?难道他直接跳到最后那个case吗?
siph
2011-06-09
打赏
举报
回复
学习,不知C++和Java的处理方式是不是相同的
yangleit
2010-04-01
打赏
举报
回复
我来总结一下吧。
首先大家去看看一本书《C++ Footprint and Performance Optimization》,里面的7章,第一节。
然后根据大量的实际程序测试(不考虑不同的编译器优化程度差异,假设都是最好的优化),那么Switch语句击中第三个选项的时间跟if/else if语句击中第三个选项的时间相同。
击中第一,第二选项的速度if语句快,击中第四以及第四之后的选项的速度switch语句快。
所以,如果所有选项出现概率相同的话,结论就是:5个选项(包括default)的情况下,switch和if/else if相同。低于5个选项if快,高于5给选项switch快!
aman_cao
2009-12-08
打赏
举报
回复
太牛B了,学习了
ycfbhsk
2009-01-22
打赏
举报
回复
switch 进行一次条件判断后直接执行到程序的条件语句
ifelse 有几种条件,就得判断多少次
ifelse和switch效率有区别,但并不能说明ifelse一无事处,有时为了可读性或者其他方面,ifelse有它的优势。
dxc803
2009-01-21
打赏
举报
回复
不懂,不明白。
cyber_bss
2009-01-15
打赏
举报
回复
很强大。。
kao331431214
2009-01-15
打赏
举报
回复
额 企鹅兄 还是那样相当的专业啊
学习ING
heavenfeng
2009-01-15
打赏
举报
回复
很了好几次的这样反编译的方式去看代码,我更关心如何自己开始去用这样的方式去读,能不能谁介绍下,
比方
0: iconst_3
1: istore_1
2: iload_1
3: lookupswitch{ //4
3: 44;
20: 55;
50: 66;
100: 77;
default: 85 }
44: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
47: ldc #3; //String 3
这样的,istore_1
iload_1是啥意思完全弄不懂,
cangyue87
2009-01-15
打赏
举报
回复
[Quote=引用 21 楼 xiaoduan5267 的回复:]
太强大了,请问这用的是什么反编译软件?
[/Quote]
那是字节码喵~~~`
Miracle1216
2009-01-15
打赏
举报
回复
[Quote=引用 8 楼 ZangXT 的回复:]
switch可以进行跳转优化,java中对switch有两种处理方式,生成不同的jvm指令,一是tableswitch,一个是lookupswitch.
对于case的分支比较密集的情况,如
Java code
public class Test {
public static void main(String[] args) {
int i = 3;
switch (i) {
case 0:
System.out.println("0");
break;
case 1:
Sys…
[/Quote]
太强大了,请问这用的是什么反编译软件?
「已注销」
2009-01-14
打赏
举报
回复
[Quote=引用 12 楼 ilysony 的回复:]
学习了。!
[/Quote]zzz
chxy148
2009-01-14
打赏
举报
回复
分析很透彻
heidian
2009-01-14
打赏
举报
回复
很好,很强大
MyLinda
2009-01-14
打赏
举报
回复
学习了...
dnybz
2009-01-14
打赏
举报
回复
太强大了。
一头头
2009-01-14
打赏
举报
回复
[Quote=引用 13 楼 ZangXT 的回复:]
写了篇blog,详细的分析了一下
http://blog.csdn.net/ZangXT/archive/2009/01/14/3777897.aspx
[/Quote]
相当专业
ZangXT
2009-01-14
打赏
举报
回复
写了篇blog,详细的分析了一下
http://blog.csdn.net/ZangXT/archive/2009/01/14/3777897.aspx
Sou2012
2009-01-14
打赏
举报
回复
学习了。!
bigbro001
2009-01-14
打赏
举报
回复
学习了。。。
加载更多回复(10)
青少儿信息学奥赛-分支-if…else if…else if…else…和
switch
语句
本课程为零基础C++语法专题课,是青少儿参加信息学奥赛NOIP通关必备-语法专题课; 2、本课程每节课均配有练习题以及真题,以锻炼... 6、本课程介绍的是程序的分支结构-if…else if…else if…else…和
switch
语句的知识
实验三--for语句及分支结构else-if
本节课学习到的知识点: 1、for语句的表达式的应用与掌握、流程形式. 2、多分支else-if,用来判断真假等。 实验中遇到的问题及解决方法: 这次课的逻辑要求比之前的课要难许多,而且对于一些数学逻辑要求掌握的比较好,在编写交错序列的计算就比较头疼。在做课后作业的时候遇到不懂的问题向助教
请教
以及登录一些编程网站看一些教程,我认为在网上查阅资料对我的进步有着明显的作用。 3、实验心得体会...
php用
switch
判断闰年,C语言-判断闰年 要用
switch
语句
请教
高
人知道
#includeintmain(){intyear,month,ex;printf("请输入年份及月份(空格分隔):3431373930");scanf("%d%d",&year,&month);if(month<1||month>12){printf("输入有误!!");}else{if((year%4==0&&year%100!=0)||year%4...
程序设计 分支结构
关于分支结构我感觉主要有if
switch
和if类似的条件表达式 。而且if else 连用
switch
case 连用,else 表示与if相反的情况,多重条件下if else 语句可以嵌套例如n种情况要用n-1个if语句来嵌套,条件表达式与if语句相似只不过形式更简单粗暴,一般嵌套不过三个,他们通常用来表示分段函数,关于
switch
语句我最在意的两点,一是case后面的一定要是一个明确的量,(...
c语言 - 分支语句 if 和
switch
c语言分支语句,if 和
switch
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章