我所看到的理由是我们说“重击” Android中的Java字节码是为了提高性能。(我怀疑还有另一个原因。)但是,通过更改字节码,它们是否没有使硬件加速技术(例如Jazelle moot)成为现实,从而实际上降低了可用于Mobile Java平台的性能?
知道目标平台是基于ARM的移动平台,这对我来说似乎很不直观。虽然它可以在其他CPU架构上为您提供更好的性能,但它似乎在面对ARM和Jazelle时会吐口水。
它对Java性能有什么样的定量影响?
它实际上会提高性能吗?
对其他平台有什么影响?(即x86,mips,yadda,yadda,yadda …)
是的,达尔维克使贾泽勒无用。唯一的问题是Jazelle首先有用还是90%的营销炒作?一个好的JIT或AOT(提前)编译器往往会比尝试使用专门的指令提供更好的性能。Dalvik的基于寄存器的方法可能比传统的Java字节码解释器更快,但是如果解释器和JIT的区别很小。希望下一个Android版本具有JIT。
使用一流的垃圾收集器和优化器编写好的虚拟机大约需要5-10年。Sun(和Microsoft)已经度过了那些年。谷歌没有。希望他们会继续对此进行投资,以使一天的Android Java代码不会比应有的速度慢90%。