【问题标题】:Android method performance suddnely slow after upgrade from Marshmallow to Nougat从 Marshmallow 升级到 Nougat 后,Android 方法性能突然变慢
【发布时间】:2017-11-26 23:31:51
【问题描述】:

我一直在开发一款游戏,使用运行 Marshmallow 的三星 Galaxy S6 作为我的开发设备之一。手机升级到 Nougat 后,一个平均需要 6ms 执行的方法突然需要 40-70ms。我的代码中的其他方法也受到了类似的影响——代码似乎已经全面放慢了速度。

在运行 Marshmallow 的 Yifang 平板电脑(来自 Walmart 的清仓端盖)上运行相同的构建(调试构建)仍然以大约 8 毫秒的时间运行该方法。除了我的代码线程只是运行了很长时间之外,Systrace 似乎没有显示任何问题。在分析器下,该方法在两种环境中都以大约 200 毫秒的速度运行,在 Marshmallow 下的三星上也是如此。唯一的区别是 java.util.Random.next() 中的 AtomicLong.compareAndSwap() 似乎需要更长的时间(可能是阻塞的),而 ArrayList.ensureExlicitCapacity()/ArrayList.grow() 似乎也需要更长的时间。

该应用程序有一个 UIThread,我在其中完成所有工作的第二个线程,以及 Android 添加的几个 Binder 线程。

我并不是在寻找任何人来解决我的性能问题,只是想知道自从升级到 Nougat 后是否还有其他人遇到过同样的问题,我可以使用哪些其他工具来尝试找到问题?

【问题讨论】:

  • 您好,这是一个很好的研究问题,但阅读起来有点棘手。您可能想用几个换行符稍微打破文字墙。

标签: java android multithreading performance android-7.0-nougat


【解决方案1】:

在 Android Nougat 下,ART 现在在执行时而不是安装时运行 JIT 优化。虽然我确信它可以加快安装和软件更新,但第一次通过代码中的路径(有时随后通过该路径)在性能上付出了巨大的代价。

幸运的是,有一种方法可以通过 adb 命令为应用运行 JIT 优化:

adb shell cmd package compile -m speed -f package-name

这个命令在here有更详细的描述。

运行此命令后,我的设备上的性能是我所期望的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-30
    • 2019-12-17
    • 2015-03-17
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    • 1970-01-01
    • 2017-03-15
    相关资源
    最近更新 更多