Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android JIT编译器如何帮助应用程序的性能?_Android_Jit_Compiler Construction - Fatal编程技术网

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

Android JIT编译器如何帮助应用程序的性能?,android,jit,compiler-construction,Android,Jit,Compiler Construction,我刚刚读到,Android的性能提高了450%,因为它添加了一个JIT编译器,我知道什么是JIT,但我真的不明白为什么它比普通的编译代码快?或者,与Android平台的旧方法(类似Java的运行编译字节码)有什么不同 谢谢 编辑:这非常有趣,谢谢!,我希望我能选择正确的答案:)JIT编译器知道它的系统,它可以利用这一知识产生比字节码更高效的代码,而且它可以超过预编译程序 这就是为什么它比传统的java系统运行得更快的原因,java系统的代码只作为字节码运行,Android也使用字节码。首先是免责

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

谢谢


编辑:这非常有趣,谢谢!,我希望我能选择正确的答案:)

JIT编译器知道它的系统,它可以利用这一知识产生比字节码更高效的代码,而且它可以超过预编译程序


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

首先是免责声明,我对Android一点都不熟悉。无论如何

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

JIT字节码编译加快了速度,因为字节码只解释一次,而不是每次执行。这可能就是您看到的那种优化


JIT SuperOptimization搜索实现程序逻辑的真正最佳指令集,它有点深奥。这可能不是你所说的,尽管我读过报告说速度会因此提高100%-200%。

虚拟机需要将编译好的字节码转换为机器指令才能运行。以前,这是使用解释器完成的,解释器对于只调用一次的代码来说是好的,但是对于重复调用的函数来说是次优的


Java虚拟机在asa JIT版本的虚拟机取代最初的解释器版本时也看到了类似的加速。

除了将Java代码编译为本机代码(这也可以通过编译器完成)之外,JIT还可以进行优化,这只能在运行时进行


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

您从哪里了解到,由于JIT,性能提高了450%?它遍布网络:JIT编译器并不比编译代码快。它只比解释代码快。因为JIT编译器不能像静态编译器那样花费大量的时间进行优化,所以代码的速度不如普通编译代码快。此外,每次运行代码都需要编译时间。为了澄清这一点,Dalvik,Android上的“类Java”VM是一个字节码解释器。在安卓2.2中,谷歌创建了一个字节码到机器码的编译器。对于执行本机编译的开销小于执行本机编译的成本的代码,使用JIT的Dalvik应该可以显著提高性能。