gpt4 book ai didi

java - if 条件的顺序会影响性能吗?

转载 作者:行者123 更新时间:2023-12-02 13:35:41 24 4
gpt4 key购买 nike

“if 条件”的顺序会影响性能吗?

假设顺序很重要,此代码 if (slowMethod() && fastMethod()) 会比 if (fastMethod() && SlowMethod()) 慢。

我认为顺序很重要,因为编译器不会分析条件的执行时间。但我不确定。

最佳答案

这两个条件将按该顺序进行评估,但只有第一个条件为真时才会评估第二个条件 - 因此乍一看,将 fastMethod 放在第一位似乎更好。

但是从性能角度来看,顺序还应该考虑每个表达式为真的概率:尽管 fastMethod 更快,但如果它几乎总是为真,而 slowMethod 几乎总是 false,您可能需要先测试 slowMethod

示例,假设:

  • fastMethod 需要 1 毫秒,80% 的时间返回 true
  • slowMethod 需要 3 毫秒,10% 的时间返回 true

然后:

  • fastMethod && SlowMethod 平均需要 3.4 毫秒(20% 的时间为 1 毫秒,80% 的时间为 4 毫秒)
  • slowMethod && fastMethod 平均需要 3.1 毫秒(90% 的时间为 3 毫秒,10% 的时间为 4 毫秒)

最后,JIT 编译器和 CPU 非常擅长优化条件,有时会导致违反直觉的性能结果。您的问题的明确答案只能通过对您的具体用例进行基准测试/分析来获得。

关于java - if 条件的顺序会影响性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47410145/

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