
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 有点好奇,是什么场景让你考虑到这个? 还是说只是闲来无事灵机一动? |