性能之 dex2oat相关

测试时 应用的编译方式是否相同?
是否都是speed profile状态 另外测试的前置条件是否相同 都是首次安装完应用后 再测的?
因为speed profile是每天都会对热代码做一次 所以如果两个手机 使用应用的时间差异很大的话 这个优化效果会差异很大?
我们有让测试 使用 dumpsys package 确认 statu=speed-profile
可以让他测完后 通过adb shell cmd package dump-profiles xxx 把有差异项的profile文件导出来 这样可以比对 同个应用在两个手机上的profile是否差不多
dump后 会有prof 文件 导出来比较一下
里面会记录该应用 热路径的类和方法

因为如果只是单独比较编译模式的话 可能都是speed profile, Q上默认安装就是speed profile 但其实刚开始没有任何热代码 所以效果等同于解释执行

通过dump-profiles 可以详细看到 到底有哪些热代码 如果对比机同一个应用 prof里记录的热路径代码 比我们多很多的话 那会比我们快

adb shell cmd package compile -m speed-profile -f co.madseven.launcher
我们有让测试执行这个命令后再测试, 这个也可能不一致吗?
这个是根据 现有的profile文件 去做speed profile (把profile里的热代码对应的方法和类 转成机器码 并生成对应的art 提高类和方法的加载速度) 但如果两个机子里 profile文件差异很大 做出来肯定不一样

所以最好是 先让测试把应用卸载后 重新装上去 这样保证我应用在两个手机上 状态相同.
经过相同的操作后 再去用命令做speed profile
这样可以大致保证 我应用在手机上 生成的profile 一样 这样用speed profile做出来的优化 能大致相同
另外两个手机 pin的文件 是否一样dumpsys pinner 可以看下.
P和Q的 插件加载的逻辑也不一样 Q上面是直接对插件解释执行的.
allow dexoptanal

猜你喜欢

转载自blog.csdn.net/qq_42894864/article/details/104704932