Android是否阉割了ARM的Jazelle技术?

2022-09-01 07:01:09

我所看到的,我们应该说“混蛋化”Android中的Java字节码的理由是性能。(我怀疑还有另一个原因。然而,通过更改字节码,他们难道没有使像Jazelle这样的硬件加速技术变得毫无意义,从而实际上降低了移动Java平台的性能吗?

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

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

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

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


答案 1

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

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


答案 2

维基百科: 达尔维克虚拟机

与大多数虚拟机和真正的Java VM(堆栈计算机)不同,Dalvik VM是基于寄存器的体系结构。

Dalvik 针对低内存要求进行了优化,具有一些特定特征,使其与其他标准 VM 区分开来:

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

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

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


推荐