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