永发信息网

三目运算符比if else 快吗 为什么

答案:2  悬赏:0  手机版
解决时间 2021-02-14 04:14
  • 提问者网友:不要迷恋哥
  • 2021-02-13 11:28
三目运算符比if else 快吗 为什么
最佳答案
  • 五星知识达人网友:迷人又混蛋
  • 2021-02-13 12:51
在C里 if else 三目的效率是一样的
但是为什么有的时候 三目的效率要高呢 (有的时候if else的效率高)这是因为编译器的原因
编译器的优化代码的程度跟你写的代码成正比。所以这个无法比较,但是理论上将效率是一样的
如果你擅长if else 就用if 擅长三目就用三目
代码简短且精炼就是 效率最高的办法
全部回答
  • 1楼网友:梦中风几里
  • 2021-02-13 14:11
你这个问题很有深度,需要从汇编的角度来解释 比如这样的一个含有三目条件运算符的语句 int b=a>5?2:20; 反汇编之后: 0040102f xor eax,eax 00401031 cmp dword ptr [ebp-4],5 00401035 setle al 00401038 dec eax 00401039 and al,0eeh 0040103b add eax,14h 0040103e mov dword ptr [ebp-8],eax 注意到了么?关键在于没有 jmp 跳转指令!! cpu在执行指令的过程中会充分地利用流水线技术来增加程序的并行化,但是如果cpu遇到了跳转指令,例如if-else语句,那么就有可能会清空流水线,导致执行效率降低。所以说没有跳转的指令(三目运算)能比有跳转的指令(if-else)更加优化。 你如果想更多地了解这方面的知识,建议看看《编程卓越之道》(卷一、卷二)和《深入理解计算机》这2本书,我一直觉得这2本书是高级程序员必修课程。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯