精易论坛

标题: 易语言 如果和判断 逻辑是完全一样的,喜欢用哪个都行 [打印本页]

作者: 凌哥    时间: 2023-11-21 16:52
标题: 易语言 如果和判断 逻辑是完全一样的,喜欢用哪个都行
生成的汇编代码完全相同,唯一的差别只是在代码编辑器里面显示的样子不同(判断更好看点)




作者: sinewtec    时间: 2023-11-21 16:57
L_判断如果()
作者: LWB666    时间: 2023-11-21 18:13
如果是多条分支的话我发现速度都一样,但是如果是一条分支,判断会比如果快,这是为什么?
作者: 凌哥    时间: 2023-11-21 18:16
LWB666 发表于 2023-11-21 18:13
如果是多条分支的话我发现速度都一样,但是如果是一条分支,判断会比如果快,这是为什么? ...

汇编代码完全一样,应该只是测试误差


作者: LWB666    时间: 2023-11-21 18:18
凌哥 发表于 2023-11-21 18:16
汇编代码完全一样,应该只是测试误差


demo.e (4.37 KB, 下载次数: 3)

大佬你可以试一下,我这测试好多遍都是 单分支判断快,多分支差不多一样

作者: 780715740    时间: 2023-11-21 18:21
L_如果判断()
作者: 凌哥    时间: 2023-11-21 18:21
LWB666 发表于 2023-11-21 18:18
大佬你可以试一下,我这测试好多遍都是 单分支判断快,多分支差不多一样
...

代码段内存对齐的问题,你可以试着 在循环开始之前 增加几个 置入代码 ({ 144 }) 就会发现每次改变速度都不一样了
作者: LWB666    时间: 2023-11-21 18:23
凌哥 发表于 2023-11-21 18:21
代码段内存对齐的问题,你可以试着 在循环开始之前 增加几个 置入代码 ({ 144 }) 就会发现每次改变速度都 ...

谢谢大佬
作者: Suky    时间: 2023-11-21 19:44
凌哥 发表于 2023-11-21 18:16
汇编代码完全一样,应该只是测试误差

我觉得可以从它们对应C语言中的那两个命令去做比较可能会更清晰
if和switch

反正在易语言环境下,这两个当成一样的来用就行了

作者: Wod    时间: 2023-11-21 21:00
Suky 发表于 2023-11-21 19:44
我觉得可以从它们对应C语言中的那两个命令去做比较可能会更清晰
if和switch

易语言确实是吧判断当作switch了。
作者: Av0x    时间: 2023-11-21 21:09
我都分不清判断 如果咋用的,我记python里面的 if else比较清晰点 如果怎么样就这样这样 否则就那样那样 到E里面就不会了
作者: alonemask    时间: 2023-11-21 21:26
Wod 发表于 2023-11-21 21:00
易语言确实是吧判断当作switch了。

感觉 switch 应该更像是 多项选择()
作者: Wod    时间: 2023-11-21 22:22
alonemask 发表于 2023-11-21 21:26
感觉 switch 应该更像是 多项选择()

刚开始我也这样觉得,后来发现多项选择实现不了。
作者: LLJ    时间: 2023-11-21 23:16
吴涛对 switch语句 有误解,严格来说 switch 是不需要执行判断操作的,而是执行跳转操作。
所以易语言中的 判断() 就真的只是判断,而不是switch。
在火山中没有 判断() 但有 分支判断 ,它是真正的switch,但再次将跳转误解为判断

真正的 switch() 所生成的x86汇编代码应该是这样:
[Asm] 纯文本查看 复制代码
jmp [JumpTable+OptionIndex*4] ; 32位指针大小为4字节,因此乘以4

只执行了跳转(jump)操作,根本不需要执行判断。


作者: 凌哥    时间: 2023-11-22 00:22
LLJ 发表于 2023-11-21 23:16
吴涛对 switch语句 有误解,严格来说 switch 是不需要执行判断操作的,而是执行跳转操作。
所以易语言中的  ...

嗯                  
作者: mitu520    时间: 2023-11-22 03:59
我也想知道 判断和如果 有什么区别
作者: 天雷    时间: 2023-11-22 15:23


以此证明还是不完全一样的
转某群员:
用判断实现这样,要重复的代码

作者: LLJ    时间: 2023-11-22 19:55
本帖最后由 LLJ 于 2023-11-22 20:05 编辑
天雷 发表于 2023-11-22 15:23
以此证明还是不完全一样的
转某群员:

以此证明还是可以一样的,空一行再写就行了

总结:易语言的 如果 和 判断 的区别只有代码缩进显示不同,生成后反汇编代码完全一样。

作者: 天雷    时间: 2023-11-22 20:13
LLJ 发表于 2023-11-22 19:55
以此证明还是可以一样的,空一行再写就行了

总结:易语言的 如果 和 判断 的区别只有代码缩进显示不同, ...

好的 已转
作者: 笨来无一悟    时间: 2023-11-22 22:39
我也喜欢判断 一家人就要整整齐齐
作者: xinhan2012    时间: 2023-11-23 10:15
所以搞了半天,我们写的一直是if?
作者: 凌哥    时间: 2023-11-23 16:16
xinhan2012 发表于 2023-11-23 10:15
所以搞了半天,我们写的一直是if?


作者: xinhan2012    时间: 2023-11-24 09:52
凌哥 发表于 2023-11-23 16:16

其实也没啥,也不影响编译
作者: chenyucheng    时间: 2023-11-25 20:08
凌哥 发表于 2023-11-21 18:21
代码段内存对齐的问题,你可以试着 在循环开始之前 增加几个 置入代码 ({ 144 }) 就会发现每次改变速度都 ...

{ 144 }是干嘛用的
作者: sihuyc    时间: 2023-11-28 09:33
弱弱的问一句  你们都是用什么来看汇编啊
作者: a019872140    时间: 2024-5-28 22:55
应该不一样的。。测试了。。判断找到了正确答案是不往下跑的




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4