JIT编译器如何帮助应用程序的性能?

时间:2010-05-13 16:46:31

标签: android jit compiler-construction

我刚刚读到 Android的性能提升了450%,因为它添加了一个JIT编译器,我知道JIT是什么,但我真的不明白为什么它比普通的编译代码更快?或者与Android平台的旧方法有什么不同(Java就像运行编译的字节码一样)。

谢谢!

编辑:这非常有趣,谢谢!,我希望我能把每个答案都选为正确答案:)

4 个答案:

答案 0 :(得分:5)

首先是免责声明,我对Android并不熟悉。总之...

我熟悉JIT编译的两个应用程序。一种是将字节码转换为实际的机器指令。第二个是Superoptimisation

JIT字节码编译可加快速度,因为字节码只会被插入一次,而不是每次都被执行。这可能是您所看到的那种优化。

JIT超级受害者,它搜索真正优化的指令集来实现程序逻辑,更为深奥。这可能不是你所说的,尽管我已经阅读了100%的报告 - 结果加速了200%。

答案 1 :(得分:3)

VM需要将编译后的字节代码转换为机器指令才能运行。以前这是使用解释器完成的,该解释器适用于仅调用一次但对于重复调用的函数而言不是最理想的代码。

当VM的JIT版本取代初始解释器版本时,Java VM看到了类似的加速。

答案 2 :(得分:2)

JIT编译器知道它的系统,它可以使用该知识来生成与字节码相比的高效代码,并且传言它可以超越预编译的程序。

这就是为什么它比传统的java系统更快,其中代码只作为字节码运行,Android也使用它。

答案 3 :(得分:1)

除了将java代码编译为本机代码(也可以使用编译器完成)之外,JIT还会进行优化,只能在运行时进行。

JIT可以随着时间的推移监视应用程序的行为,并优化那些真正有所作为的使用模式,即使以代码执行路径中的其他分支为代价,如果这些分支的使用频率较低。