计算机的逻辑运算中判断大于和判断等于的速度哪个更快
题主你这个问题是认真的么?
首先,这个执行速度跟语言有很大的关系。就拿X86上的C语言来说,一个逻辑判断语句翻译成汇编,由三部分组成:
1、运算语句
2、比较或测试语句
3、跳转语句
如果 if 里是两个简单的变量或常量,例如 if(A \u0026gt; B),则第一部分很简单,很可能就直接两寄存器之间的比较。否则的话,视 if 语句里条件表达式复杂的程度先,会有不同长度的运算指令。
第二部分通常是 CMP 指令或 TEST 指令。这主要是根据寄存器的值,做 SUB 运算或 AND 运算,结果不回送寄存器,仅影响标志位。
第三部分主要是各种跳转指令。根据目标地址不同,会有直接寻址、间接寻址等不同的指令周期。因此如果 if 和 else 分支长度不一,那么的确有可能会有若干个指令周期的区别。
【计算机的逻辑运算中判断大于和判断等于的速度哪个更快】 从题目的意思来看,如果 if 语句里面的条件表达式是简单算式,那么答案是:执行时间一样。
因为大于判断和等于判断在汇编层面仅仅是一个标志位的区别,而在X86中,跳转指令特别丰富,对于编译器来说,只是改一个指令就可以了,指令周期不需要变化。
结论就是:不要在高级语言层面作无意义的优化。
■网友
一样快。讨论这个没意义,有精力不如好好想想怎么才能少写一个循环,少操作一次外存。 写一次磁盘都够千万个CPU周期了
■网友
等于快,判零比判非零少一个周期======割======有些回答好搞笑,题主又没说是编程,更没说高级语言,人家问的是计算机原理,现在CPU有零标志位,结果为零可以直接判断,非零就要再判断正负
■网友
等于快!等于直接做异或运算,大于和小于都要做减法运算。减法需要处理借位、补码,浮点数的话还要另外处理。异或的每一位都是相互独立的。
■网友
对于这种钻研精神,我觉得应该给予鼓励,不知道为什么这么多人持反对意见。我当初也是对这些细枝末节很好奇,才去debug看汇编代码的,回到原题,如果等于用的是xor我觉得是等于快。
■网友
以x86为例,都是做个减法然后判断eflags的cf、zf、sf位不要用高级语言说事,你能知道编译器怎么优化代码的?
推荐阅读
- 侧重业务逻辑的产品需求规格说明书,需要有哪些要点
- 大部分黑客或安全研究员读的是啥「大学专业 」
- 在哈尔滨工业大学计算机系就读是啥样的体验
- 计算机技术与科学专业怎样利用高中毕业的暑假
- 非计算机专业想要利用课余时间深入自学C++,想要找到比较体面的工作大概需要啥水平
- 有点计算机基础的人想尽快找份编程的工作。哪种编程的工作最好找还需要学些啥
- 硕士研究生选通信还是计算机视觉
- 华威大学计算机本科咋样
- 加拿大像滑铁卢,多伦多大学的计算机授课型研究生咋样
- 计算机进不了桌面,任务管理器也打不开,咋办
