1
xtreme1 2024-12-03 15:24:42 +08:00
|
2
glacer 2024-12-03 15:27:58 +08:00
大于小于不等于都有对应的汇编指令,都是一个 cpu 指令操作,理论上效率一样。
|
4
InkStone 2024-12-03 17:47:42 +08:00 这种简单的数字比较的效率就操心了,常见编译器都会给你优化好的。
按语义写就行了 |
5
FYFX 2024-12-03 18:00:52 +08:00
没啥区别吧,x86 应该都是 cmp ,cmp 就是做减法然后检查 flag
|
6
billccn 2024-12-03 18:31:30 +08:00
大多数构架上只有和 0 比较的操作比非 0 的要省一个减法,其他不管是那种比较耗时都是一模一样的。另外比较操作属于 ALU 执行的,通常就一个时钟周期,这个和比较后面要进行的分支相比属于小巫见大巫,不要去想着优化比较。
|
7
009694 2024-12-03 20:48:43 +08:00 via iPhone
我感觉当你真需要考虑比较大于和大于等于效率问题的时候 你的代码甚至不应该用 c 了
|
8
yankebupt 2024-12-03 21:03:50 +08:00 汇编有 JNZ
其实 1 楼说得好,分支才是要考虑的 关键是跳转,如果跳转分支预测的 cache miss 了,会打断流水线 cpu 去欻欻外层 cache 读数据读指令(你用 C 一般程序不大还好,要是要去内存读东西那就不是几个时钟周期能解决的问题了,非常惨),一堆时钟周期就这么出去了…… |
9
aminobody 2024-12-03 21:11:00 +08:00
没区别, 请见汇编
https://godbolt.org/z/bdMzh6j9K |
10
shiltian 2024-12-04 10:17:42 +08:00
compiler 会优化的,所以无需担心这种问题
|
11
Austaras 2024-12-04 15:44:56 +08:00
sufficiently smart compiler.jpg
|
12
flyqie 2024-12-04 20:35:06 +08:00 via Android
有点好奇,是什么场景让你考虑到这个?
还是说只是闲来无事灵机一动? |