我刚刚读到Android添加了JIT编译器,性能提高了450%,我知道什么是JIT,但我不太明白为什么它比正常编译的代码更快?或者与Android平台旧方法(类似于Java运行编译后的字节码)有何不同?感谢您的帮助!
编辑:这非常有趣,谢谢!我希望我可以选择每个答案作为正确答案 :)
编辑:这非常有趣,谢谢!我希望我可以选择每个答案作为正确答案 :)
首先声明,我对Android一点也不熟悉。无论如何...
我熟悉JIT编译的两个应用。一个是将字节码转换为实际的机器指令。第二个是超级优化。
JIT字节码编译加速了执行,因为字节码只被解释一次,而不是每次执行时都要解释。这可能是您看到的优化类型。
JIT超级优化搜索真正最佳的指令集来实现程序逻辑,有点玄学。虽然我读过100%至200%的速度提升报告,但这可能不是您所说的。
虚拟机需要将编译后的字节码转换成机器指令才能运行。以前使用解释器来完成这项工作,对于只调用一次的代码来说还可以,但对于需要反复调用的函数来说不够优化。
当JIT版本的虚拟机取代最初的解释器版本时,Java虚拟机也看到了类似的加速。
JIT编译器了解自身的系统,可以利用这些知识生成比字节码更高效的代码,据传它甚至可以超越预编译程序。
这就是为什么JIT编译器可以比传统的Java系统更快,传统系统只能运行字节码,这也是Android所使用的。