[MCU] 哪一种语句执行效率高

[复制链接]
1077|23
 楼主| liliang9554 发表于 2020-7-4 14:57 | 显示全部楼层 |阅读模式
我们在写程序的时候,总会用到switch语句跟if语句,请问在单片机中,我实现同样的功能任务切换,在同样的MCLK下,我用switch...case语句或者是if...else if语句,哪一种语句的执行效率高,及所用时间短,占用资源少?这个问题我一直都想整明白的,可是一直都不得要领,请教各位大虾了,谢谢!
午夜粪车 发表于 2020-7-4 15:02 | 显示全部楼层
lm3s811上是case语句在优于if语句。
zhaoxqi 发表于 2020-7-4 15:06 | 显示全部楼层
现在是什么年代了,有必要纠结这个问题吗?
huangchui 发表于 2020-7-4 15:09 | 显示全部楼层
if语句效率高 switch可读性强 话说超过三个以上的分支还是建议用switch
jiajs 发表于 2020-7-4 15:13 | 显示全部楼层
主要还是看编译器的设置以及单片机的内部结构   这个好像没有固定的答案  呵呵
zhanghqi 发表于 2020-7-4 15:20 | 显示全部楼层
经典if.....else语句,执行效率高,switch虽然可读性较强,但是限制性很大,
zhenykun 发表于 2020-7-4 15:23 | 显示全部楼层
和你的参数有直接相关性,其中一个是(不管是if还是switch)第一次判断就成立了,于是就结束了,另一个是最后一次判断才成立,明显是第一个效率高嘛。
wyjie 发表于 2020-7-4 15:28 | 显示全部楼层
这个问题的的却很重要的,在单片机资源有限的条件下的还必须注意的
jlyuan 发表于 2020-7-4 15:32 | 显示全部楼层
这要看怎么应用和编程思想 IF套用 也是很麻烦的
yszong 发表于 2020-7-4 15:35 | 显示全部楼层

switch
case语句用时短
dengdc 发表于 2020-7-4 15:41 | 显示全部楼层
这个判断好像只是两个时钟吧
heweibig 发表于 2020-7-4 15:44 | 显示全部楼层

按理CASE快,多数用查表跳转完成

实际取决编译的代码
wuhany 发表于 2020-7-4 15:47 | 显示全部楼层
不好说,这switch语句与if语句的看在什么一样的场合下
jiahy 发表于 2020-7-4 15:50 | 显示全部楼层
不一样的编译器和不一样的优化条件,同样的C语句编译出来的汇编指令都是不同的,所以这个问题很难回答。
lizye 发表于 2020-7-4 15:58 | 显示全部楼层
更重要的是,如今大多数的主流芯片在内核里都内置了预取指和跳转分支预取指等功能,在这种情况下,更难讨论你的问题。
shimx 发表于 2020-7-4 16:02 | 显示全部楼层
我的建议是超过2个分支就是用SWITCH,在内核如此强劲的今天,程序的可读性也许更为重要。
xxrs 发表于 2020-7-4 16:06 | 显示全部楼层

switch语句反而比ifelse的执行效率要高。

switch...case与if...else的根本区别在于,switch...case会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与switch变量的值是相等的。从而,switch...case不用像if...else那样遍历条件分支直到命中条件,而只需访问对应索引号的表项从而到达定位分支的目的。
spark周 发表于 2020-7-4 16:09 | 显示全部楼层
如果选择量很少,估计好if else 好用,多了的话,估计就是switch case了,至少看着方便,呵呵呵。
 楼主| liliang9554 发表于 2020-7-4 16:13 | 显示全部楼层
谢谢各位的大力支持的,这个我结贴了啊
wiba 发表于 2020-8-3 15:31 | 显示全部楼层
当然是汇编语言了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

950

主题

11568

帖子

6

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