代码之家  ›  专栏  ›  技术社区  ›  Matt Huggins

在Java中,我应该将位移到除以2吗?[副本]

  •  26
  • Matt Huggins  · 技术社区  · 15 年前

    可能的重复:
    Is shifting bits faster than multiplying and dividing in Java? .NET?
    Quick Java Optimization Question

    4 回复  |  直到 8 年前
        1
  •  62
  •   Paul Sasik    12 年前

    除非你在一家商店和一个代码库工作,那里的比特移位很常见,那么,IMHO,你就有被混淆的危险。是的,这些表达式在逻辑上是等价的,但是:

    • n00b可能会被替代语法弄糊涂
    • 一个像我这样从大学开始就不需要做任何改变的老人,可能会感到困惑
    • 如果你觉得有必要对你刚才所做的事情发表评论,那么你肯定会离开。简单的划分是自我记录的,任何熟悉初等数学的人都会清楚
    • 作为良好的编码实践,最好使代码简单/普通,而不是聪明(er)

    所有这些都是相对的,而且,再一次,真的取决于你们商店的标准。如果你的同事喜欢小班化,那就一定要大班化。

        2
  •  19
  •   Rémi    15 年前

    现代的编译器足够聪明,可以为两个除法生成最快的代码。如果更快的话,他们会换班的。如果您想要实现的是2的除法,那么使用除法将使代码更清晰。当被分割的数字是负数时,你可以避免问题。

        3
  •  15
  •   Michael Borgwardt    15 年前

    即使他们没有,这仍然是一个过早的微观优化,应该避免,有利于代码更清晰。

        4
  •  11
  •   Malfist    15 年前

    CPU的除法程序将处理这个问题。你没必要这么做。

    过早优化

    推荐文章