社区
Java SE
帖子详情
请教为什么switch的效率要比if else 高?
一头头
2009-01-14 02:49:37
请教为什么switch的效率要比if else 高?
希望从编译原理的角度分析 谢谢哇
...全文
4597
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
打赏
举报
回复
学习了...
wangqiangcc
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)
大学生c语言程序设计实训报告总结.docx
大学生c语言程序设计实训报告总结.docx
用C++制作一个简易计算器.docx
设计一个简易的计算器
计算机等级考试二级C语言题库+环境
仅供计算机等级考试二级C语言使用
C语言复习题大全!绝对经典!!!!
C语言复习题大全!!C语言复习题大全!!C语言复习题大全!!C语言复习题大全!!C语言复习题大全!!C语言复习题大全!!C语言复习题大全!!C语言复习题大全!!C语言复习题大全!!
2022年java学习心得体会例文.docx
2022年java学习心得体会例文.docx
Java SE
62,633
社区成员
307,289
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章