• 请不要在回答技术问题时复制粘贴 AI 生成的内容
nnegier
V2EX  ›  程序员

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

  •  
  •   nnegier · Dec 3, 2024 · 3738 views
    This topic created in 703 days ago, the information mentioned may be changed or developed.
    14 replies  •  2024-12-10 13:43:36 +08:00
    glacer
    glacer
    Dec 3, 2024
    2
    大于小于不等于都有对应的汇编指令,都是一个 cpu 指令操作,理论上效率一样。
    chendy
    chendy
    Dec 3, 2024
    3
    @xtreme1 唤醒了十多年前汇编课程上用汇编写排序的痛苦回忆
    InkStone
    InkStone
    Dec 3, 2024❤️1
    4
    这种简单的数字比较的效率就操心了,常见编译器都会给你优化好的。

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

    还是说只是闲来无事灵机一动?
    nnegier
    nnegier
    OP
    Dec 10, 2024 via Android
    13
    @flyqie 书,因为它在无序序列的时候用不等于,在有序序列的时候突然用了大于小于
    nnegier
    nnegier
    OP
    Dec 10, 2024 via Android
    14
    @flyqie 一所 211 大学用的教材书,清华大学出版社,纯满足你的好奇心,千万别回复我,这个话题结了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1029 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 18:44 · PVG 02:44 · LAX 10:44 · JFK 13:44
    ♥ Do have faith in what you're doing.