V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
nnegier
V2EX  ›  程序员

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

  •  
  •   nnegier · 8 天前 · 1949 次点击
    14 条回复    2024-12-10 13:43:36 +08:00
    glacer
        2
    glacer  
       8 天前
    大于小于不等于都有对应的汇编指令,都是一个 cpu 指令操作,理论上效率一样。
    chendy
        3
    chendy  
       8 天前
    @xtreme1 唤醒了十多年前汇编课程上用汇编写排序的痛苦回忆
    InkStone
        4
    InkStone  
       8 天前   ❤️ 1
    这种简单的数字比较的效率就操心了,常见编译器都会给你优化好的。

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

    还是说只是闲来无事灵机一动?
    nnegier
        13
    nnegier  
    OP
       1 天前 via Android
    @flyqie 书,因为它在无序序列的时候用不等于,在有序序列的时候突然用了大于小于
    nnegier
        14
    nnegier  
    OP
       1 天前 via Android
    @flyqie 一所 211 大学用的教材书,清华大学出版社,纯满足你的好奇心,千万别回复我,这个话题结了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   884 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 19:58 · PVG 03:58 · LAX 11:58 · JFK 14:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.