35

我所看到的理由是我们应该说“Bastardizing”Android 中的 Java 字节码是性能。(我怀疑还有另一个原因。)但是,通过更改字节码,他们不是让 Jazelle 等硬件加速技术没有实际意义,从而实际上降低了移动 Java 平台的可用性能吗?

知道目标平台是基于 ARM 的移动平台对我来说似乎与直觉相反。虽然它可能会在其他 CPU 架构上为您提供更好的性能,但它似乎在 ARM 和 Jazelle 面前唾弃。

它对 Java 性能有什么样的量化影响?

它是否真的提高了性能,如果是这样,如何?

对其他平台有什么影响?(即 x86,mips,yadda,yadda,yadda...)

4

3 回答 3

19

是的,Dalvik 让 Jazelle 毫无用处。唯一的问题是 Jazelle 一开始是有用的还是 90% 的营销炒作?一个好的 JIT 或 AOT(提前)编译器往往比尝试使用专门的指令提供更好的性能。Dalvik 基于寄存器的方法可能比传统的 java 字节码解释器更快,但如果解释器和 JIT 之间的差异很小。希望 Android 的下一个版本之一具有 JIT。

使用最先进的垃圾收集器和优化器编写一个好的虚拟机需要大约 5-10 年的时间。Sun(和微软)已经度过了那些年。谷歌没有。希望他们会继续投资,以便有一天 Android Java 代码不会比应有的速度慢 90%。

于 2009-07-20T19:18:17.613 回答
5

维基百科:Dalvik 虚拟机

与大多数虚拟机和真正的 Java VM(它们是堆栈机器)不同,Dalvik VM 是基于寄存器的架构。

针对低内存要求进行了优化,Dalvik 具有一些区别于其他标准 VM 的特定特征:

  • VM 被精简以使用更少的空间。
  • Dalvik 没有即时编译器。
  • 常量池已修改为仅使用 32 位索引以简化解释器。
  • 它使用自己的字节码,而不是 Java 字节码。

此外,Dalvik 的设计使设备可以有效地运行多个 VM 实例。

编辑:参见维基百科:开放手机联盟。创始成员包括英特尔、摩托罗拉、高通和德州仪器。ARM 于一年后的 2008 年 12 月加入。因此,我想这些公司在当时还不是会员时依赖专有技术是没有意义的,因为他们的目标是创建开源 iPhone/Blackberry 的竞争对手。

于 2009-07-20T12:37:12.930 回答
2

实际上,我的印象是,Dalvik 更多的是为了空间效率而不是执行效率。同样来自维基百科:

压缩的.dex 文件通常比从相同 .class 文件派生的压缩.jar(Java 存档)小几个百分点。

虽然目前的手机可能使用支持 Jazelle 的 ARM,但未来不一定如此。

同样来自维基百科(警告:传闻):

已发布的规范非常不完整,仅足以编写可支持使用 Jazelle 的 JVM 的操作系统代码。声明的意图是只有 JVM 软件需要(或被允许)依赖于硬件接口细节。这种紧密的绑定有助于硬件和 JVM 可以一起发展,而不会影响其他软件。实际上,这使 ARM Holdings 能够对哪些 JVM 能够利用 Jazelle 进行相当大的控制。它还阻止开源 JVM 使用 Jazelle。

一旦他们向 Dalvik 添加了 JITter,这一切都将成为一个有争议的问题。

于 2009-07-20T14:33:53.943 回答