晖,国画-西班牙真人秀大全,不同的文化,不同的真人秀故事

编译:掘金nanjingboy,作者:Calin Juravle

编译:掘金nanjingboy,作者:Calin Juravle

在 Android Pie 中,咱们在 Play Cloud 中推出了 ART 优化装备,这是一项新的优化特性,它大大进步了新装置或更新运用后的发动时刻。均匀而言,在不同设备上,咱们观测到运用发动时刻削减了 15%(冷发动)。一些明星事例乃至削减了 30% 以上。这瘦腿办法其间最重要的一点是用户能够免费运用该特性,而无需用户或开发者的任何额定操作!

Pl西南交通大学教务网ay Cloud 的 ART 优化装备

该特性建立在由 Android 7.0 Nougat引进的 Profile Guided Optimization(PGO)根底之上。PGO 答应 Android Runtime 经过构建运用中抢手代码的装备,并会集优化装备来进步运用功用。这能够带来巨大的改善,一同削减彻底编译的运用在传统内存及存储上的影响。但是,它依赖于设备在闲暇保护形式下依据这些代码装备来优化运用,这意味着用户或许需求几天时刻才干看到这些优点 — 这是咱们旨在改善的。

Play Cloud 的 ART 优化装备运用 Android Play 的强壮功用,在装置/更新时带来一切的 跑酷游戏PGO 优点:大多数用户无需等候即可取得超卓的功用!

这个主意依赖于两个要害的观测成果:

  1. 运用一般在许多用户和设备之间具有许多常用的代码途径(抢手代码),例如在发动或要害用户途径期间运用的类。这一般能够经过聚合几百个数据点来发现。
  2. 运用开发者一般会逐渐推出他们的运用,从 alpha/beta 途径开端,然后扩展到更广泛的受众。即便没有 alpha/beta 设置,用户一般也会将运用升级到新版本。

这意味着咱们能够运用运用的初次布置来引导其他用户的功用。ART 剖析运用代码的哪些部分值得在初始设备上进行优化,然后将数据上传到 Play Cloud,后者将构建七彩阳光广播体操中心聚合代码装备文件(包括与一切设备相关的信息)。一旦有满足的信息,代码装备就会发布并与运用的 APK 一同装置。

在设备上代码装备作为种子,在装置时完成有用的装备来引导优化。这些优化有助于改善冷发动时刻以及安稳功用状况,一切这些都无需 app 开发者编写任何代码。

第一步:构建代码装备

其间一个首要方针是尽或许快地从聚合及匿名数据中构建高质量、安稳的代码装备(以基金定投最大极限地晖,国画-西班牙真人秀大全,不同的文明,不同的真人秀故事添加可获益的用户数量),一同也需求保证咱们有满足的数据来正确地优化运用的功用。采样过多的数据在装置时会占用更多带宽和时刻。此外,咱们构建代码装备的时刻越长,取得优点的用户就越少。采样过少的数据,代码装备将没军事博物馆有满足的信息来确认合适优化的内容。

聚合的成果是咱们所说的三国志13威力加强版中心代码装备,它只包括有关每个设备随时机话样本中经常出现的代码的匿名数据。咱们移除异常值以保证咱们专心于对大多数用户而言十分重要的代码。

试验标明,在很短的时刻内,最常用的代码途径能够十分快地被核算出来。这意味着咱们能够有满足快的速度构建代码装备,以使大多数用户获益。

晖,国画-西班牙真人秀大全,不同的文明,不同的真人秀故事

第二步:装置代码装备

在 Android 9.0 Pie 中,咱们引进了一种新式装置工件:dex 元数据文件。类似于晖,国画-西班牙真人秀大全,不同的文明,不同的真人秀故事 APK,dex 元数据文件是惯例的存档文件,它包括秋刀鱼怎么优化 APK 的数据 — 就像在 clo晖,国画-西班牙真人秀大全,不同的文明,不同的真人秀故事u如此爱老婆d 中构建的代码中心装备相同。它们之间一个要害的区别是 dex 元数据仅由渠道和运用商铺办理,而且对开发者来说是不直接可见。

还有对 App Bundles / Google Play 动态分发的内建支撑:无需任何开发者干涉,一切运用的功用拆分都经过优化。

第三步:运用代码装备来优化功用

要搞理解这些代码装备终究怎么完成更好的功用,咱们需求检查它们的结构。代码装备包括以下信息:

  • 发动期间加载的类
  • 运行时被以为值得优化的抢手办法
  • 代码的布局(比方,在发动或发动后履行的代码)

运用这些信息,咱们运用了各种优化办法,其间以下三项供给了大部分优势:

  • 运用映像:咱们运用发动类来创立需求预先填充的堆,其间类已预先初始化(称为运用映像)。当运用发动时,晖,国画-西班牙真人秀大全,不同的文明,不同的真人秀故事咱们将映像直接映射到内存中,以便一切发动类都能够随时运用。

这样做的优点是运用的履行能够节约周期,因为它无需再次履行,然后能够缩短发动时刻。

  • 代码预编译:咱们预先编译一切抢手代码。当运用履行时,代码中最重要的部分现已过优化,可在本地直接履行。运用无需再等候 JIT 编译器发动。

这样做的优点是代码被映射为洁净的内存(与 JIT 的脏内存相比较),这进步了全体的内存的功率。内存压力下内核能够开释洁净的内存,而脏内存则不能被开释,这削减了内核杀死运用的或许性。

  • 更高效的 dex 布局:咱们依据装备抛出的办法信息重新组织 dex 字节码。dex 字节码布局如下所示:[发动代码、发动后的代码、其他非装备代码]。

这样做的优点是能够更高效地将 dex 字节码加载到内存中:内存页具有更好的占用尹暮夏率,且因为一切内容都在一同,因而咱们需求加载的更少,咱们能够做更少的 I/O。

咱们在上一年年末向 Playstore 上的一切运用推出了 Play 妈富隆Cloud 的装备。

  • 已超越 30,000 侧方泊车个运用有所改善
  • 均匀而言,冷启晖,国画-西班牙真人秀大全,不同的文明,不同的真人秀故事动在各种设备上的速度进步了 15%
    • 许多排名靠前的运用在所选设备上取得了 20%+(比方 Youtube)乃至 30%(比方 Google 查找)的进步。
  • 在 Android Pie 上装置的运用中有 90% 以上取得了优化
  • 额定优化的装置时刻几乎没有添加
  • 适用于一切 Pie 设备。
  • 许多排名靠前的运用在所选设备上取得了 20%+(比方 Youtube)乃至 30%(比方 G益可粒oogle 查找)的进步。

一个十分风趣的观测成果是,均匀而言,ART 优化了大约 20% 的运用办法(假如咱们元宵节来历核算代码的实践巨细,则更少)。而关于另一些运用,装备仅占代码量的 2%,而关于某些运用,该数字则高达 60%。

为什么这是一个十分重要的计算?这意味着 Runtime 没有看到太多的运用代码,因而没有对代码进行优化。虽然有许多代码不会被履行的比方(比方错误处理或向后兼容性代码),但这也或许是因为未运用的功用或不必要的代码所形成的。歪斜散布是金六福一个激烈的信号,它标明后者能够在进一步优化中发挥重要作用(比方经过删去不需求的 dex 字节码来削减 APK 巨细胡颖简历)。

未来开展

咱们为 ART 优化装备所带来的改善感到振奋,咱们将会在未来更多地开展这一概念。构建每个运用的代码装备为更多运用改善供给了时机。开发者能够运用数据,以依据(功用与)终端用户的相关性及重要性来改善运用。运用装备中收集到的信息,能够重新组织或修剪代码,以进步功率。晖,国画-西班牙真人秀大全,不同的文明,不同的真人秀故事开发者能够运用 App Bundle,依据其运用情况来拆分功用,并防止向用户发送不必要的代码。咱们现已看到生命运用发动时刻的巨大改善,并期望看到装备所带来的其他额定优点,使开发者的日子愈加轻松,一同为咱们的用户供给更好的体会。

 关键词: