首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中,我是否应该被2除以位移位?

在Java中,我是否应该被2除以位移位?
EN

Stack Overflow用户
提问于 2010-11-01 20:15:46
回答 3查看 36.8K关注 0票数 35

可能重复:

Is shifting bits faster than multiplying and dividing in Java? .NET?

Quick Java Optimization Question

很多年前,在大学里,我学到了用一个位变换来完成和除以两个相同的事情,但是通常速度要快得多。我不知道自9-10年前我了解到Java之后,Java在这方面是如何发展的。Java编译器是自动将除法二转换为位移位操作,还是应该自己在代码中手动执行位移位操作?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-01 20:17:49

除非你在一家商店里工作,而且代码库中的位移位很常见,否则IMHO,你就有被混淆的危险。是的,这些表达式在逻辑上可能是等价的,但:

  • A n00b可能会被另一种语法
  • 搞糊涂--像我一样,一个从大学开始就不需要做任何改变的老家伙,如果你有点换班,觉得有必要对你刚刚做的事情发表评论,那你肯定要走了。简单除法是自我记录的,对于任何熟悉基本数学的
  • 的人来说,你不会在这么简单的事情上比编译器更聪明,所以不要费心尝试
  • 作为良好的编码实践,最好是让代码变得简单/普通,而不是聪明的

所有这些都是相对的,而且,同样地,也取决于你商店的标准。如果你的同事喜欢比特变换,那么无论如何都要向前移动。

票数 71
EN

Stack Overflow用户

发布于 2010-11-01 20:20:25

是的,这是任何试图进行编译器优化的人都会做的第一件事(而且已经做了至少50年了),这肯定是由Java JIT编译器完成的,而且您可能很难找到任何不这样做的编译器。

即使他们没有,这仍然是一个不成熟的微观优化,应该避免,以使代码更清晰。

票数 25
EN

Stack Overflow用户

发布于 2010-11-01 20:17:53

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

这被称为早熟优化

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4072703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档