共计 1506 个字符,预计需要花费 4 分钟才能阅读完成。
这篇不讲细节,讲办法,讲思路。
看到好多人在做系统优化时齐全摸不着头脑,毫无章法的乱打乱撞,切实忍不住想说几句,又不好直说,还是写下来做个笔记吧。
什么是 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 自身带有很好的性能调试工具,Linux 上也有大量的开源工具,只有想用就是很容易的事。如何依据工具的数据来确定优化的形式,这就是考验工程师能力的时候。然而如果你不应用工具,就算解决了性能问题,我也会鄙视你。
最初,须要强调的是硬件资源是确定的,零碎性能优化须要做的就是均衡资源的应用。性能优化没有固定的办法,也没有捷径可走。应用工具找到性能耗费多的中央,一点点的优化、一 ms 一 cycle 的抠就是性能优化须要做的事件。