Android 系统性能优化
这篇不讲细节,讲方法,讲思路。什么是 Android 系统?
看到好多人在做系统优化时完全摸不着头脑,毫无章法的乱打乱撞,实在忍不住想说几句,又不好直说,还是写下来做个笔记吧。
这看起来是个很简单的问题,但是,你真的清楚 Android 系统到底是怎样运行的吗?搞清楚 Android 系统的本质,是进行系统开发的前提。
系统(更确切的应该叫OS)本质上是通过软件来合理分配和使用硬件资源。从这个角度上看,Android 系统中包含两个主要的部分 Linux 和 ART,其他部分都可以看成在其之上运行的软件。ART 提供了应用运行环境,在系统中可以看做一个相对独立的部分,通常可以做为专项优化。在谈及系统优化时,主要指的是基于 Linux 对 Android 进行优化。
性能优化的本质
前面提到,系统是对硬件资源的分配和使用。这意味着硬件从根本上已经限制住了系统性能上限,而性能优化的目标就是最大限度的使用硬件资源。沿着这个思路,我们可以给出性能优化的几个方向:
- 硬件能力增强:这个说法有些牵强,因为现在的嵌入式设备都是高集成度的,不可能更换硬件。这里的增强主要是指对CPU、GPU、Memory等重要的硬件单元进行超频。硬件标定的频率都是保守频率,只要处理好散热,通常都可以稳定工作在更高的频率上。超频带来的主要问题是稳定性,在通过完整的压力测试前,不建议修改频率。
- 硬件资源分配优化:硬件资源是固定的,所以我们优化的方向就是如何有效的利用硬件资源。Linux 和 Android 都是向着通用平台的方向发展,但是当开发具体的产品时,都是有侧重的方向。将硬件资源向重点功能倾斜,就是优化的方向。这里涉及到的技术有:Cgroup、优先级调整、CPU频率范围调整、CPU核绑定等。
- 调度策略优化:Linux 是一个通用系统,它的调度策略必然是平衡的,我们可以根据具体产品形态来调整调度策略。这里涉及的技术有:CPU调度策略、I/O调度策略、内存回收策略、Thermal策略、文件系统调优等。
- 软件运行效率优化:我们必须承认一个事实,软件开发过程中对性能的考虑比较少。大部分的软件都有可优化的空间。当然我们不会对所有软件都进行优化,我们需要找到关键的软件。除了在代码上优化,还可以使用GPU、NPU等硬件加速单元来优化软件。
- 应用层的系统资源优化:有时,系统上的硬件资源优化无法满足我们的需求。因为在系统运行时,应用层是最清楚哪些进程是重要的。应用层可以通过保留重要进程、释放不重要的进程来协调系统资源的使用。这里的核心就是平衡,保证用户最关心的进程获得足够资源。
其实系统性能优化没有标准的方法步骤,大致方向就是上述的五个。可以所有方向都做优化,也可以只沿着一个方向做优化,只要最终的性能指标符合要求就完成优化工作。这里的关键点就是:
- 如何判定优化符合性能指标。
- 如何找到优化点。
【Android 系统性能优化】最后,需要强调的是硬件资源是确定的,系统性能优化需要做的就是平衡资源的使用。性能优化没有固定的方法,也没有捷径可走。使用工具找到性能消耗多的地方,一点点的优化、一ms一cycle的抠就是性能优化需要做的事情。
推荐阅读
- android第三方框架(五)ButterKnife
- Android中的AES加密-下
- 带有Hilt的Android上的依赖注入
- 如何在Mac中的文件选择框中打开系统隐藏文件夹
- 单点登陆
- android|android studio中ndk的使用
- 操作系统|[译]从内部了解现代浏览器(1)
- 游乐园系统,助力游乐园管理
- 中国MES系统软件随工业化成长
- Android事件传递源码分析