android - JIT优化后如何查看Android代码?
问题描述
我希望你一切都好。
在编程时,我开始怀疑我的懒惰(但漂亮)的代码最终是否会得到优化,而我不需要关心优化与否。所以我进行了一些搜索,发现 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 设备上编译为原生代码。
推荐阅读
- action - 创建谷歌“如何做”视频对普通 YouTube 视频有什么好处?
- java - 缺少无 arg 构造函数的 KryoException
- parquet - 使用 pyarrow 读取流导致模块“pyarrow”没有属性“StreamReader”
- python - 我怎样才能适应这个朴素贝叶斯模型?ValueError:使用序列设置数组元素
- apache-spark - 使用 Databricks 将十进制字段加载到 Redshift 表时出现 Avro 文件错误
- javascript - 使用带有 css 选择器的 Javascript 滚动
- sql - 使用 dblink 在连接信息字符串中缺少某些内容
- android - React 本机应用程序无法在 android pie 上运行
- moq - 如何模拟 BulkImportResponse
- c - 如何在 MASM 中使用 pop 和 ret