Android 系统性能优化,最近几年 ,Google 之外,绝对是中国的手机厂商参与得最深最广。不光深挖系统、场景,还要和 Top 应用合作优化,和各种流氓应用勾心斗角。同时 Google 也在不断吸收一些 common 的优化经验,应用到每年的大版本更新中去。

接下来简单梳理一下,近几年来各大手机厂商拿出来宣传的性能优化技术。

1 华为 - 18 个月不卡顿

长时间使用卡顿,成为 Android 手机的通病,各个手机厂商应该都有专项来投入这个问题,华为是首个公开把这个问题展示到了台前,并成了一段时间的热点。

1.1 技术背景

从华为的公开资料看,应该是通过分析大量压力和老化测试后出现的卡顿问题,有共性的原因归类为下面几个:

  • 1.文件碎片化严重  
    长时间使用,文件反复读写就带来了大量的文件碎片,读写文件时速度变慢,导致卡顿。

  • 2.开放的安卓缺乏对资源优先级的判断  
    Android 系统是开放的,没有明确的应用优先级。

  • 3.系统资源有限无多余资源可用  
    系统资源有限,资源需求方很多,容易出现同一时刻资源紧张的情况。

1.2 技术方案

  • 1.减少文件碎片化

    • 应用 F2FS: "引入了全新的 F2FS 文件系统,相较于安卓原生的EXT4文件系统,能从源头上减少文件碎片化的产生"

    • 文件系统碎片整理: "引入了实时自动整理文件碎片功能,大大提升了文件垃圾回收效率" 猜想应该是把整理放在空闲/待机时

  • 2.应用优先级智能判断

    • 基于用户习惯和应用流行程度共同设定优先级。

    • 应用分类,打开时提供不同的资源保障。分为:计算优先型、内存优先型、存储优先型。比如相机比较耗内存,打开时就需要立即清理出足够内存。

  • 3. 智能调度

    • CPU 调度优化:猜想是做了应用级别的 CPU 资源控制,频率核心数,schedule 层面当时不一定有涉及。

    • 内存资源调度:低优先级应用退到后台,进行内存压缩。

    • 存储 IO 资源调度:"开辟了类似公交专用道的动态专属资源通道,以满足优先级高的应用获得稳定足够的IO资源"。猜想基于IO调度器调整进程IO优先级,或者通过blkio cgroup控制其他应用的IO访问。

    • Android 基础组件优化:数据库 read 优化,引入 Vulkan。

1.3 优化评价

号称 18 个月不卡顿, 是基于一套性能衰退的评估模型, 注意图1的右下角的一行小字 "基于华为测试模型", 在这基础上加大压力,模拟用户使用 18 个月之后的情况。从华为公开的资料看,18 个月不卡顿发布的时候,这个评估模型是基于文件系统的老化之后的性能测试。
"我们使用了一种配合大数据的科学方式来模拟文件系统在 18 个月之后老化的情况。我们让手机在短时间之内,完成一般手机在 18 个月中运行读写、删除、反复读写的流程,就好像看视频的时候按 ”快进”一样。"

基于特定的评估模型,解决特定的问题。效果肯定是有,但是卡顿肯定也还是有,不然就不会有后面的种种吓一跳技术了。

2 华为 - GPU Turbo

2.1 技术背景

华为手机的游戏性能一直饱受诟病,970 之前麒麟处理器的能效做的不好,这里不光有芯片设计层面的问题,也有软件/驱动层面的问题,这时候手机就要去做取舍,在功耗优先的策略下,性能就必然很受限制。
一些媒体公开的评测也能看到,那时候华为的手机往往玩游戏几分钟十几分钟就发热限频了。

2.2 技术方案

出来以后,业界哗然,各种讨论也非常多。

在综合一些后来的评测结果看,个人认为,主要是两点,解决 bug,优化功耗(这可能是 CPU Turbo1.0的核心了)。

2.3 优化评价

从 GPU Benchmark 数据看,GPU Turbo 引入之后并没有带来 Benchmark 数据上的性能提升。

使用麒麟 970 芯片的 P20-PRO 在没有 GPU Turbo 的情况下,如果关闭 "省电精灵", 实测性能表现和同样搭配 970 的、有 GPU Turbo 的荣耀 V10 基本一致。

所以结论是 GPU Turbo 1.0 实际上没有提升 GPU 的物理性能,而是优化了功耗,使得发热降低,从而可以避免之前不得已而为之的"省电精灵"过度限制系统性能。对于移动设备来说,没有牺牲性能的前提下,降低了功耗,其实就相当于是提升了性能。

当然现在 GPU-Turbo 已经进化到了 3.0,估计都是细节的优化比较多,具体提升可能比较有限,毕竟华为都不大力宣传了。

3 华为 EROFS 方舟编译器

尚未有第三方使用的报告,有待验证。

但从文件系统、从编译器入手,确实不是主打性价比的组装厂能做到的。

4 VIVO Multi-Turbo

4.1 技术背景

VIVO 在系统优化包装方面推出的比较晚,18年开始推出 Dual-Turbo,19 年晋级到 Multi-Turbo, 以后可能会叫 Multi-Turbo 2.0?

4.2 技术方案

Turbo 来 boost 去的事情,各个手机厂商应该比较早就都开始做了,不管是高通平台的 perflock 还是MTK平台的perfservice ,原生都具备简单场景 boost 的能力,三星除外。

Turbo 会带来性能提升的原因有二

  • 一是 处理器平台的默认策略往往是性能-功耗均衡的产物,特别是16nm制程之前的处理器,功耗发热都比较厉害,系统的性能-功耗策略就必须做的比较保守,这时候往往针对一些典型的场景比如应用启动、滑动列表做boost,效果就比较明显。

  • 二是 系统并不知道每个应用的特点,他们的资源需求是什么样的,Android 系统的 CPU、GPU、网络、内存 这些子系统都是各自为政,往往某一部分就会成为一些场景的性能短板,这时候做应用资源/行为分析,针对性做资源保障,就可以进一步提升性能表现。

4.2.1 Dual-Turbo

Dual-Turbo分为系统加速引擎 System-Turbo 和游戏引擎 Game-Turbo

  • System-Turbo

应该是系统层面的 common 加速,比如应用启动、触控、抢红包、微信、头条等典型场景和应用的加速以及调度和内存层面的资源保障策略。

  • Game-Turbo

应该是在系统策略基础上,做更精细的场景优化,比如游戏加载、帧率稳定性、游戏行为识别(和游戏厂商合作,比如团战了,告诉系统一下),以及更激进的游戏资源保障策略,绑定到大核、清理后台内存等等。

4.2.2 Multi-Turbo

  • ART++编译增强 Turbo

  • Net Turbo

  • Center Turbo

  • AI Turbo

  • Cooling Turbo

ART 部分可能是调整了一些参数以及默认行为。

网络部分,物理性能肯定没得提升,倒是可以抢占同一个路由器的资源、另外策略上进行应用级别的网络资源控制。

AI 自动化的识别应用或者是行为?

Cooling Turbo 凑数的,可能是有人专门来tuning 软件温控了,另外只有4个的话,数字可能不够吉利~

4.3 优化评价

从公开的内容看,涉及的面比较多,这里 Turbo 一下,那里也 Turbo 一下,看起来不够系统,甚至取名字都很为难,才叫 Multi-Turbo 。

数了一下,少了内存优化的部分,估计明年会有。最近的IQOO Pro 已经使能了 F2FS。

作为华为之外的厂商,确实很少在单点上做出非常大的突破,但是他们积累的一些方方面面的优化,都是通过大量的市场反馈而来,同样也是非常有价值。

5 OPPO Hyper-Boost

5.1 技术背景

同 VIVO

5.2 技术方案

从命名看,OPPO 比 VIVO 要更有逻辑一点,内容应该差不多。

VIVO 是以技术点分类,A技术 Turbo、B技术 Turbo、C技术 Turbo。

OPPO 以模块分类,系统、游戏、应用

  • OPPO 系统引擎

整合梳理 CPU、GPU、DDR、存储、modem、wifi、display 做相应的优化。

  • OPPO 游戏引擎
    保障 top 游戏性能,做资源调度优化、网络优化等,以及和部分游戏厂家合作优化

比如当年王者荣耀的多线程版本率先发布, 早期的版本都是一个巨大 UnityMain ,当时基本上没有处理器能吃得消,做到持续高性能输出,手机端是不可能实现的。

  • OPPO 应用引擎

和 top 应用进行典型场景合作,基本上都是应用通知手机系统要进行到什么场景,手机做针对性的资源准备。

5.3 优化评价

同 VIVO, 值得一提的是应用引擎,和微信、淘宝、QQ 这些 top 应用做合作优化, 和当年王者荣耀多线程版本一样, 会占一点时间优势。这也是国内的手机厂商做的更出色的地方,卖给消费者的不只是硬件和系统,还有使用体验,哪怕不是自己的应用和业务,只要是影响用户使用的地方,就主动去发起合作和优化。

6 小米 - Mi-Turbo

6.1 技术背景

"Game Turbo游戏加速,游戏工具箱2.0,手游爱好者的福音。"

"Mi Turbo 防系统卡顿,通过系统底层优化,模拟使用18个月后依然流畅如新。"

6.2 技术方案

  • Game Turbo

技术上和 OV 应该差不多,但是没有提和厂家的合作优化,由于小米在发热控制这块一直比较开放,所以一般比较少限频。游戏工具箱、或者是游戏模式 top 几家厂商都有了。

  • Mi Turbo

有点后发制人的意思,Turbo + 18个月不卡顿,方案和手段应该都是大同小异

6.3 优化评价

由于把小米放在最后,而内容和方案上小米又没有什么特别的地方,所以可写的内容很少。

在系统优化这块呢,小米算是起了个大早,赶了个晚集。

7 Others

7.1 MEIZU

  • One Mind 智慧引擎

  • 内存清道夫

  • 应用冻结

7.2 一加

  • RAM Boost
    内存压缩 + 常驻内存

7.3 联想

  • 永不卡顿

比较有意思的是永不卡顿居然还有3.0版本,无敌很寂寞,不过现在已经不宣传了。

7.4 努比亚

国企不需要!

应该是做了一些事情的,只不过不会包装。

7.5 三星

Turbo 是什么?三星还是大厂气质,和苹果一样,不整这些,不过易用性、还有针对性的优化方面,三星确实已经落后国产top厂商了,先全球再中国的思路导致的结果吧。但不管是 sdcardfs 还是 F2FS 三星都贡献巨大。

8 总结

总之呢,主要见到的就是下面这些点,选一些组合打包起来,就变成 Multi 或是 Hyper 了。

  1. 解决性能短板,bugfix

    往往一些短板成为了一款机器的性能瓶颈,比如号称 火龙的 骁龙810处理器,巨大的发热量导致手机不得不降频使用,实际性能甚至不如一下中端机器。典型的短板比如处理器功耗发热、电池容量、散热设计、内存大小等等。

    或者是类似系统存在明显的性能bug,比如GPU Driver/framework的问题,影响性能发挥。

  2. 场景/行为 boost策略,兼顾 low power

    做场景和行为的识别已经非常容易,甚至原生都有,但手机电池毕竟有限,如何避免一些火力全开的暴力想法,做精细化的资源控制,才是考验水平的地方,游戏都跑60帧,只耗2/3的电,不就赢了吗?

  3. 更聪明的调度

    如果 CPU/GPU/DDR/IO 等各个模块的调度都能做到足够聪明,就好比优秀的自动挡变速箱能做到手动老司机的水平,但手机场景往往非常复杂,一个应用有时候是处理器密集型的、有时候又是IO密集型的,所以聪明的调度和场景策略还需要结合起来用,相辅相成。至于叫不叫 AI 就没所谓了。

  4. 应用级别的优化,系统端精细化地去profile具体的应用/游戏,分析其行为特点,保障其使用的资源需求。另外一个方面,只有应用自己知道自己接下来要做什么,需要什么资源,应用在一些时候可以呼叫系统给自己相应的资源支持。这就需要合作优化了。

  5. 文件系统 + 存储
    比如现在 F2FS + UFS3.0 变成行业热点。

  6. 大内存 + 应用常驻
    应用内存常驻,就可以实现应用秒开,避免加载的时间,大内存是应用常驻的基础,内存压缩可以进一步增加可用内存空间。

  7. 虚拟机、编译器优化
    google 和芯片厂做的比较多,OEM 比较少深度涉及。

  8. 更好的信号、更优质的屏幕(刷新率 90 Hz 甚至 120 Hz)等硬件。

9 展望

展望一下,这里想把手机厂商分为三类,

  • 一类是苹果,自己研发芯片和核心元件,有自己的OS和生态;

  • 二类是三星、华为,自己研发芯片和核心元件(当然华为和三星还是有所区别),共享 Android OS 和生态,当然三星在本土化这一块做的是不如华为和其他 Top 厂商的;

  • 三类是其他 Android 手机厂商,芯片和核心元件来自于不同供应商,共享 Android OS和生态;

从技术层面看,苹果始终会是在性能的第一阵营,可以顺利推行从硬件到 OS 到 APP 级别的任何性能保障方案;

三星、华为属于第二阵营,可以实现芯片-OS层面的整合优化;

其他 Top Android 手机厂商差距不会太大,他们有多个不同的 SoC 供应商,方案有差异,非常芯片底层的地方,往往不会去涉及,更多是做纯软件层面的策略性的优化,有价值但是不容易形成壁垒,注意这个不容易形成壁垒指的是在 top 厂商中间,一些小的厂商往往还是心有余而力不足。不过还是很期待看到有更多的突破出现。

那些年,我们一起经历过的 Android 系统性能优化相关推荐

  1. 【书评】一本Android系统性能优化的新书

    Android性能优化,是一个合格的Android程序员必备的技能,现如今几乎所有的Android面试内容都会或多或少涉及性能优化方面的话题. 学习Android性能优化可以让我们在简历上展示自己的专 ...

  2. Android系统性能优化(73)---总结

    Android性能优化来龙去脉总结 一款app除了要有令人惊叹的功能和令人发指交互之外,在性能上也应该追求丝滑的要求,这样才能更好地提高用户体验. 以下是本人在工作中对经历过的性能优化的一些总结,依据 ...

  3. Android 系统性能优化(15)---Android性能优化典范 - 第3季

    Android性能优化典范的课程最近更新到第三季了,这次一共12个短视频课程,包括的内容大致有:更高效的ArrayMap容器,使用Android系统提供的特殊容器来避免自动装箱,避免使用枚举类型,注意 ...

  4. Android 系统性能优化(82)---Android性能优化:手把手带你全面实现内存优化

    Android性能优化:手把手带你全面实现内存优化 在 Android开发中,性能优化策略十分重要 本文主要讲解性能优化中的内存优化,希望你们会喜欢 目录 示意图 1. 定义 优化处理 应用程序的内存 ...

  5. Android 系统性能优化(81)---Android后台优化系列-background optimization-初识低耗电模式

    Android后台优化系列-background optimization-初识低耗电模式 〇. 序 当我们手机屏幕电量的时候,我们或在游戏,或在看视频,或在上网,屏幕是一个很耗电的组件,在电量消耗方 ...

  6. Android 系统性能优化(80)---Android性能优化:这是一份详细的布局优化 指南(含lt;includegt;、lt;Viewstubgt;、lt;mergegt;)

    Android性能优化:这是一份详细的布局优化 指南(含<include>.<Viewstub>.<merge>) 前言 在 Android开发中,性能优化策略十分 ...

  7. Android 系统性能优化(78)---如何优化您的 Android 应用 (Go 版)

    如何优化您的 Android 应用 (Go 版) 在去年的 Google I/O 大会上发布了 Android (Go 版),其目标是为全球入门级设备提供高质量的智能手机体验.在今年早些时候,6 家原 ...

  8. Android系统性能优化(71)---关于Bitmap图片资源优化的小事

    Android性能优化:那些关于Bitmap图片资源优化的小事 前言 在 Android开发中,性能优化策略十分重要 本文主要讲解性能优化中的Bitmap 使用优化,希望你们会喜欢 目录 1. 优化原 ...

  9. Android系统性能优化(69)---含内存优化、布局优化

    Android性能优化:含内存优化.布局优化 前言 在 Android开发中,性能优化策略十分重要 因为其决定了应用程序的开发质量:可用性.流畅性.稳定性等,是提高用户留存率的关键 本文全面讲解性能优 ...

最新文章

  1. vue从创建到完整的饿了么(5)v-for,v-bind与计算属性
  2. 老王学linux-更改语言
  3. python清除缓存的命令_python – 重启django服务器时清除缓存的最佳位置
  4. 如何区分SCSI卡和RAID卡?
  5. 动态加载 回显_ElementUI cascader级联动态加载及回显
  6. python 核心编程第5章(习题)
  7. Go编译exe可执行文件去掉运行时的CMD窗口
  8. 开红字信息表的时候服务器为空,对方开了红字信息表但系统没有显示怎么办
  9. mysql 编码utfmb4
  10. 第三周读书笔记《程序员修炼之道》
  11. python机器学习案例系列教程——LightGBM算法
  12. linux目录跳转快捷方式——z武器
  13. C#判断文字是否为汉字
  14. Code[VS]1997 守卫者的挑战
  15. android ts合并_ts视频合并工具安卓版
  16. quartz mysql表文件_spring boot+Quartz+数据库存储
  17. git pull之后出现REBASE(1/1)
  18. ppurl 下载电子书
  19. 一、针对工业领域线圈小目标检测,基于Yolov5s网络改进检测头实验及其检测效果对比
  20. 2023北京物资学院计算机考研信息汇总

热门文章

  1. shell命令-pushd和popd
  2. Java中对象都是分配在堆上吗?你错了!
  3. python常用机器学习框架(torch、paddlepaddle、MindSpore)的安装方法
  4. python如何进阶提升_python快速进阶3-提高pip install速度
  5. 帮忙看看代码吧,简单的二级python题
  6. 3.16 使用铅笔工具和平滑工具绘制气球 [Illustrator CC教程]
  7. python中argparse_python中argparse
  8. Andriod修改之GG代码换成直装
  9. Nature Microbiology | 山羊粪便的绿色秘密
  10. 全球第一位「半机械人」宣告死亡!