首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java优化:仅字节码与JIT

Java优化:仅字节码与JIT
EN

Stack Overflow用户
提问于 2011-01-27 22:17:52
回答 2查看 779关注 0票数 6

在为android设备开发游戏时,我需要瞄准那些根本没有JIT的设备,并且只依赖于字节码优化。我想知道这些优化的集合是不是空的…

实际上,java编译器(硬的是javac,而不是JIT)有没有做一些优化,比如把a/4转换成>> 2?或者每一次优化都是JIT的工作?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-27 22:28:32

标准Java编译器做了一些优化,但它将大部分优化留给了JIT。

JIT确切地知道程序在哪个处理器上运行,并且还可以访问运行时信息,因此它可以比Java编译器预先做更多的优化。此外,提前进行广泛的优化可能会在某种程度上“混淆”字节码,从而使JIT更难对其进行优化。

我不知道Google的编译器在把你的Java字节码转换成Dalvik码时会做些什么--它可能会做更广泛的优化。

也许这个工具会对你有用:Dalvik Optimization and Verification With dexopt

顺便说一句,您提到的示例并不总是有效的;将a / 4转换为a >> 2并不能保证您的程序在任何处理器上都能运行得更快。我曾经在某个地方读过一篇文章(对不起,现在找不到了…)这解释了在(我认为)现代的x86处理器上,a >> 2甚至可能比a / 4慢。

在任何情况下,都不要进行过早的优化,比如在源代码中手动将a / 4转换为a >> 2,除非您有确凿的证据(通过性能测量)证明这样做是值得的。

票数 7
EN

Stack Overflow用户

发布于 2011-01-27 22:43:15

如果您的执行平台真的在执行字节码,那么您关于a / 4a >> 2更快的直觉可能是错误的。您需要做一些严肃的应用程序评测来弄清楚:

  • 是否值得优化,
  • 将精力集中在哪里,以及
  • 什么(微)优化实际有效。

javac编译器不太可能尝试微优化算法。最优的本机代码取决于实际执行平台的硬件,如果javac试图优化字节码,可能会使JIT编译器的任务更加困难。

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

https://stackoverflow.com/questions/4817443

复制
相关文章

相似问题

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