求助:请教高手单片机C语言中的问题

[复制链接]
3827|19
 楼主| comeon201208 发表于 2013-3-9 15:45 | 显示全部楼层 |阅读模式
我们在写程序的时候,总会用到switch语句跟if语句,请问在单片机中,我实现同样的功能任务切换,在同样的MCLK下,我用switch...case语句或者是if...else if语句,哪一种语句的执行效率高,及所用时间短,占用资源少?这个问题我一直都想整明白的,可是一直都不得要领,请教各位大虾了,谢谢!
胡斯哲 发表于 2013-3-9 21:56 | 显示全部楼层
这个不晓得   占个位置  等高手!!
jobszheng 发表于 2013-3-10 10:41 | 显示全部楼层
lm3s811上是case语句在优于if语句。
hualch007 发表于 2013-3-10 13:39 | 显示全部楼层
现在是什么年代了,有必要纠结这个问题吗?
refee 发表于 2013-3-10 14:51 | 显示全部楼层
if语句效率高 switch可读性强 话说超过三个以上的分支还是建议用switch
cjhk 发表于 2013-3-10 19:09 | 显示全部楼层
主要还是看编译器的设置以及单片机的内部结构   这个好像没有固定的答案  呵呵
1021256354 发表于 2013-3-10 19:45 | 显示全部楼层
经典if.....else语句,执行效率高,switch虽然可读性较强,但是限制性很大,
jlass 发表于 2013-3-11 09:33 | 显示全部楼层
不一定吧,这有什么可说的。

和你的参数有直接相关性,其中一个是(不管是if还是switch)第一次判断就成立了,于是就结束了,另一个是最后一次判断才成立,明显是第一个效率高嘛。
smilingangel 发表于 2013-3-11 12:54 | 显示全部楼层
这个问题的的却很重要的,在单片机资源有限的条件下的还必须注意的
tianm 发表于 2013-3-11 12:58 | 显示全部楼层
这要看怎么应用和编程思想 IF套用 也是很麻烦的
51xlf 发表于 2013-3-11 13:05 | 显示全部楼层
switch
case语句用时短
51xlf 发表于 2013-3-11 13:05 | 显示全部楼层
这个判断好像只是两个时钟吧
谈的元 发表于 2013-3-11 23:00 | 显示全部楼层
按理CASE快,多数用查表跳转完成

实际取决编译的代码
superman2012 发表于 2013-3-11 23:40 | 显示全部楼层
不好说,这switch语句与if语句的看在什么一样的场合下
三千花花世界 发表于 2013-3-12 11:48 | 显示全部楼层
不一样的编译器和不一样的优化条件,同样的C语句编译出来的汇编指令都是不同的,所以这个问题很难回答。

更重要的是,如今大多数的主流芯片在内核里都内置了预取指和跳转分支预取指等功能,在这种情况下,更难讨论你的问题。

我的建议是超过2个分支就是用SWITCH,在内核如此强劲的今天,程序的可读性也许更为重要。
 楼主| comeon201208 发表于 2013-7-11 21:14 | 显示全部楼层
谢谢各位的大力支持的,这个我结贴了啊
 楼主| comeon201208 发表于 2013-7-11 21:15 | 显示全部楼层
wangfuchong 发表于 2013-3-9 22:02
帮你在这个问了,自己关注一下有无回答:http://www.deyisupport.com/question_answer/f/55/t/18983.aspx ...

谢谢楼上,好的,我看看的啦
 楼主| comeon201208 发表于 2013-7-11 21:18 | 显示全部楼层
wangfuchong 发表于 2013-3-9 22:02
帮你在这个问了,自己关注一下有无回答:http://www.deyisupport.com/question_answer/f/55/t/18983.aspx ...

给完分的我仔细的去看了,楼上给帮忙解决的非常不错的,太谢谢了
 楼主| comeon201208 发表于 2013-7-11 21:20 | 显示全部楼层
我把wangfuchong在其他地方帮我解决的好答案的分享给大家了
switch语句反而比ifelse的执行效率要高。

switch...case与if...else的根本区别在于,switch...case会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与switch变量的值是相等的。从而,switch...case不用像if...else那样遍历条件分支直到命中条件,而只需访问对应索引号的表项从而到达定位分支的目的。
通宵敲代码 发表于 2013-7-14 16:44 | 显示全部楼层
如果选择量很少,估计好if else 好用,多了的话,估计就是switch case了,至少看着方便,呵呵呵。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

69

主题

4146

帖子

9

粉丝
快速回复 在线客服 返回列表 返回顶部