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

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

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

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

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