问题描述
希望你一切都好。
在编程时,我开始怀疑我的懒惰(但漂亮)的代码最终是否会得到优化,而我不需要关心优化与否。所以我进行了一些搜索,发现 HotSpot 或 OpenJ9 是我可以用来将 Java 代码编译成程序集并对其进行优化的工具。
所以我想,如果我将我的 example.kt 代码转换为 example.class 并在这个 example.class 上运行 HotSpot 或 J9,我可以查看优化的代码。
java -XX:+UnlockDiagnosticVMOptions -XX:CompileCommand=print,com.xxx.android.Example ~/Desktop/.../jarName.jar
Error: Could not find or load main class com.xxx.android.Example
如果有人以前尝试过,请您帮我找到一种方法来获得优化的 android 代码吗?非常感谢。
解决方法
Hotspot 和 OpenJ9 将编译为汇编,汇编代码是为您运行它们的平台、程序运行时或预先汇编的。它将从类文件编译为该平台上的本机代码。
由于您无法在 Android 上运行 Hotspot 或 J9,因此您无法以这种方式为 Android 进行编译。
对于 Android,您使用 Android ART 编译器,该编译器在从类文件到设备外的 dex 文件和 apk 文件的多步骤过程中进行编译,然后在 Android 设备上编译为本机代码。