在 C 中,数字"大于"或"小于"比较是不是比"不等于"比较运算效率要高些?

1 天前
 nnegier
1804 次点击
所在节点    程序员
12 条回复
xtreme1
1 天前
glacer
1 天前
大于小于不等于都有对应的汇编指令,都是一个 cpu 指令操作,理论上效率一样。
chendy
1 天前
@xtreme1 唤醒了十多年前汇编课程上用汇编写排序的痛苦回忆
InkStone
1 天前
这种简单的数字比较的效率就操心了,常见编译器都会给你优化好的。

按语义写就行了
FYFX
1 天前
没啥区别吧,x86 应该都是 cmp ,cmp 就是做减法然后检查 flag
billccn
1 天前
大多数构架上只有和 0 比较的操作比非 0 的要省一个减法,其他不管是那种比较耗时都是一模一样的。另外比较操作属于 ALU 执行的,通常就一个时钟周期,这个和比较后面要进行的分支相比属于小巫见大巫,不要去想着优化比较。
009694
1 天前
我感觉当你真需要考虑比较大于和大于等于效率问题的时候 你的代码甚至不应该用 c 了
yankebupt
1 天前
汇编有 JNZ
其实 1 楼说得好,分支才是要考虑的
关键是跳转,如果跳转分支预测的 cache miss 了,会打断流水线 cpu 去欻欻外层 cache 读数据读指令(你用 C 一般程序不大还好,要是要去内存读东西那就不是几个时钟周期能解决的问题了,非常惨),一堆时钟周期就这么出去了……
aminobody
1 天前
没区别, 请见汇编
https://godbolt.org/z/bdMzh6j9K
tianshilei1992
16 小时 58 分钟前
compiler 会优化的,所以无需担心这种问题
Austaras
11 小时 31 分钟前
sufficiently smart compiler.jpg
flyqie
6 小时 41 分钟前
有点好奇,是什么场景让你考虑到这个?

还是说只是闲来无事灵机一动?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1094691

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX