我所看到的理由,我们应该说,“杂种”的Java字节码在Android中是性能。(我怀疑还有另一个原因。)然而,通过更改字节码,他们不是让Jazelle等硬件加速技术变得毫无意义,从而实际上降低了移动Java平台的性能吗?
我知道目标平台是一个基于ARM的移动平台,这似乎与我的直觉相反。虽然它可能会在其他CPU架构上提供更好的性能,但它似乎是对ARM和Jazelle的挑战。
它对Java性能有什么样的定量影响?
它真的提高了性能吗?如果是的话,它是如何提高性能的?
这对其他平台有什么影响?(即x86,mips,yadda,yadda,yadda...)
发布于 2009-07-20 19:18:18
是的,Dalvik让Jazelle变得一无是处。唯一的问题是,Jazelle从一开始就是有用的,还是90%的营销炒作?一个好的JIT或AOT(提前)编译器往往比尝试使用专门的指令提供更好的性能。Dalvik的基于寄存器的方法可能比传统的java字节码解释器更快,但如果解释器和JIT之间的细微差别。希望Android的下一个版本有一个JIT。
使用最先进的垃圾收集器和优化器编写一个好的虚拟机需要大约5-10年的时间。Sun (和微软)已经花了这些年。谷歌没有。希望他们会继续投资,这样有一天Android Java代码就不会比它应有的速度慢90%。
发布于 2009-07-20 12:37:13
Wikipedia: Dalvik virtual machine
与大多数虚拟机和真正的Java不同,Dalvik VM是基于寄存器的体系结构。
Dalvik针对低内存需求进行了优化,它具有一些与其他标准虚拟机不同的特定特征:
此外,Dalvik的设计使得一个设备可以高效地运行VM的多个实例。
维基百科编辑:参见:Open Handset Alliance。创始成员包括英特尔、摩托罗拉、高通和德州仪器。一年后,ARM于2008年12月加入。因此,我猜这些公司在非会员的时候依赖专有技术是没有意义的,因为他们的目标是创造开源的iPhone/Blackberry竞争对手。
发布于 2009-07-20 14:33:54
实际上,我的印象是Dalvik更多的是为了空间效率而不是执行效率。同样来自维基百科:
未压缩的 .dex文件的大小通常比从相同.class文件派生的压缩的 .jar (Java Archive)小几个百分点。
虽然目前的手机可能会使用支持Jazelle的ARM,但未来并不一定是这样。
同样来自维基百科(警告:传闻):
发布的规范非常不完整,仅足以编写能够支持使用Jazelle的JVM的操作系统代码。声明的意图是只有JVM软件需要(或允许)依赖于硬件接口细节。这种紧密的绑定有助于硬件和JVM可以一起发展,而不会影响其他软件。实际上,这给了ARM控股相当大的控制权,控制哪些JVM能够利用Jazelle。它还阻止开源JVM使用Jazelle。
一旦他们给Dalvik添加了一个JITter,这一切都将是一个没有意义的问题。
https://stackoverflow.com/questions/1153076
复制相似问题