gpt4 book ai didi

java - 什么更快 : equal check or sign check

转载 作者:行者123 更新时间:2023-12-01 18:14:02 27 4
gpt4 key购买 nike

我想知道哪种操作更快:

int c = version1.compareTo(version2);

这个

if (c == 1)

或者这个

if (c > 0)

符号比较是否只使用一位检查,而相等比较使用减法,还是不是这样?为了确定起见,假设我们在 x86 上工作。

附注不是优化问题,只是想知道它是如何工作的。

最佳答案

假设这些操作在没有任何优化的情况下被 JITted 到 x86 操作码中,则没有区别。这两种情况的可能 x86 伪汇编代码片段可能是:

cmp i, 1
je destination

和:

cmp i, 0
jg destination

cmp 运算在两个操作数(寄存器 i 和立即数 0)之间执行减法,丢弃结果并设置一些标志:正数、负数、溢出等

这些标志随后用于触发条件跳转(即,如果条件则跳转),在一种情况下,如果两个操作数e相等,在第二种情况下,如果第一个操作数是g 大于第二个。

同样,这没有考虑任何软件(JVM 方面)和/或硬件优化。事实上,x86_64 架构具有复杂的管道,具有高级分支预测和乱序执行,对此这些微基准测试几乎毫无意义。我们早已过了计数指示。

关于java - 什么更快 : equal check or sign check,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30819826/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com