android项目运行慢 安卓运行效率低_缓存


android项目运行慢 安卓运行效率低_缓存_02


这是“科技“时光机第 32 篇文章。读一读过去,比一比现在。

由于数据和写作背景与当前有所差异,如有错误和不符合,欢迎指出,和谐讨论。


喜闻乐见的问题,其实目前由于硬件性能的过剩,安卓手机已经不像是过去那样速度比IOS系统有明显的差距了,尤其是去年90赫兹高刷新率屏幕的加入,更是把整体的流畅度提升到了一个新的阶段。

如果你非要纠结于为什么IOS和安卓在运行速度上有差异,那么我这里只能从处理器、系统运行机制、软件交互三个方面来回答。


android项目运行慢 安卓运行效率低_采样率_03


处理器缓存设计差异

通常只要了解电脑的人,或多或少应该都了解一些手机的运行机制。处理器、RAM、ROM,其中RAM是我们通常说的内存、运存;ROM是我们通常说的硬盘。

比如说要在手机上运行吃鸡游戏,那么首先要做的应该是将数据包下载安装到ROM里面去,长时间保存起来,即便断电也可以保存。当你打开游戏的时候,游戏需要执行的文件会被调取到RAM里面,然后处理器再从RAM里面调取需要运行的任务来处理器,最后输出命令给屏幕、喇叭等等零部件的控制芯片,这些控制芯片执行命令,才有了你看见的吃鸡画面。

因此从上面的理论我们可以得到一个结果就是说:处理器的性能越好,单位时间可以处理的任务就越多;RAM内存的越大,可以装下的运行文件就越多,同时运行的程序也就越多。

但是我们会经常忽略一个问题就是:计算机内的数据处理是万分之一秒来计算的,如果要从RAM里面读取文件来处理,查询执行的命令和中间的传输是很慢的。因此,在处理器设计里面,会另外单独为处理器准备缓存,分为1级缓存和2级缓存,有的会配备3级缓存。

拿iPhone的A12芯片举例,1级缓存的大小是128K,2级缓存的大小是8M,而同时期高通骁龙855的1级缓存是64K,2级缓存是512K。你不要嫌小,在处理器这种按照纳米为单位的地方,缓存每增加一倍,就需要付出极大的成本。而处理器自身缓存的作用,就是将需要处理的数据提前载入,可以跟处理器运行同步,做到几乎0延迟。处理器需要运行文件,先从1级缓存里面找,再从2级缓存里面找,最后才是RAM里面找。

缓存设计上的差异,导致安卓手机芯片经常需要等待从RAM中调取数据,从而增加了数据处理等待的时间。生动一点来说就是同样是吃饭,苹果是插了一根管子直接到胃里面,把食物倒进去;安卓这是放在碗里面,一勺一勺放到嘴里。


android项目运行慢 安卓运行效率低_bat 等待上一步取得结果后执行_04


系统的执行和编写机制

这个应该大家或多或少都有了解。安卓和IOS,在系统层面的资源调度优先级是不一样的。安卓系统的资源调用优先级在后台,而IOS的资源调用优先级在目前屏幕正在显示的应用。

举一个例子就是开车,我们开车的核心目的肯定是想要把车开起来在公路上驾驶,这是第一优先级对吧?至于什么空调啊,放音乐啊,导航啊,这些东西都是其次。那么对于IOS系统来说,就像是纯电动车,车子发动之后,先踩油门把车子发动起来,然后再说开空调,开导航的问题;而安卓呢,就更像是传统的燃油车,发动之后还要等着热发动机,到达一定转速,有的人还要等着空调启动,慢悠悠查找好路线,放起音乐,再开始驾驶。

同时由于安卓是开源系统,将很多接口和权限放给了第三方应用厂商。这样就导致早期的安卓洗系统后台进程相当混乱,基本上每一个应用都可以擅自启动服务,占据资源。而且安卓的内存使用机制又是等到满了过后再开始杀进程,这样就导致整个运存一直都是满载的,即便你用了清理软件清理,过不了一会儿该怎么样还是怎么样。

IOS就不一样,能够像现在一样运行第三方应用程序,还是要感谢乔老爷子最终想开了。最初乔布斯的设想是自己组建团队开发应用,让整个IOS生态封锁,避免垃圾软件导致垃圾体验。不过最后还是在劝说下做了App Store,但是对于应用的权限管理极其严格,谁要不听话的后果就是下架。包括中国BAT三座大山的应用。这样一来,IOS就有充足的资源分配给正在运行的应用程序。

同时,由于IOS是基于Objective-C语言进行编写,最后直接被编译为RAM指令集,因此避免了中间的编译器翻译环节。而安卓提供的是虚拟机机制,代码被编译为虚拟机指令之后,还需要再一次被编译为RAM指令,中间多了一道环节,所以安卓系统运行机制上面会比IOS理论上要慢一些。


android项目运行慢 安卓运行效率低_bat 等待上一步取得结果后执行_05


软件交互

这一点真的太重要了,很多人会认为交互这个东西不就是动画嘛,有什么技术含量?

实际上好的交互动画以及交互逻辑,可以让原本卡顿的手机立马焕然一新。曾经网上有个段子就是:如何让你的手机立马变得流畅起来?去设置里面关掉所有的动画效果就可以了。确实这样真的可以让你感觉手机好像是变快了,开什么应用都“快”到没有动画的地步。

但是,失去了动画,你就会觉得操作起来很别扭,很多地方变得不那么顺畅了。如何取得动画和时间的最优解,其实就是IOS成功的地方。当你现在细看iPhone的每一个动画效果时,你都会发现所有动作都是有逻辑的,比如点开启和关闭应用都是从应用所在位置触发的,打开应用的瞬间你还可以上滑直接关闭应用。这要得益于苹果率先使用了更高赫兹的采样率屏幕(是采样率,不是安卓显示画面的高刷新率),采样率越高,捕捉到的动作越多,系统做出的反应就越细。

尤其是在推出了IOS 7扁平化设计之后,苹果几乎框定死了一套成熟的交互标准,让第三方App严格执行,这样一来也就严格统一了IOS生态系统的软件体验性。虽然安卓也推出了自己的整套交互设计规范,但是你懂的,没几个厂商真正按照要求在做。


不过话说回来,都2020年了,只要你购买的是安卓品牌厂商的旗舰机器,无论是3000还是5000,真的会有比iPhone差很多的体验吗?我不信。