所以我正在尝试为Android编写一些低级代码,我主要担心的是我想通过JIT编译器(或其他任何东西)避免所有优化。在做了一些研究后,最好的方法似乎是:
我的问题是:这实际上会避免所有优化吗?之前的讨论https://groups.google.com/forum/#!topic/android-platform/Y-pzP9z6xLw让我不确定,我不能100%通过阅读文档来说服自己。
非常感谢任何确认方式。
答案 0 :(得分:5)
dexopt
执行的某些指令重写无法禁用。例如,对volatile long
字段的访问必须与访问long
字段的方式不同,并且通过用不同的指令替换field-get指令来处理特化。
dexopt
执行的优化采用指令替换的形式,通常是某种“加速”,允许VM少做一点工作。所有这些优化都是提前静态执行的,而不是在运行时动态执行,因此您将获得一致的行为。启用dexopt
优化不会引入未知数,它只是从一组知识变为另一组知识。
最大的变异来源是Dalvik的JIT编译器,您可以使用-Xint:fast
禁用它。有关如何在整个系统范围内进行配置的说明,请参阅this slightly outdated doc。