相比ios,安卓系统的执行效率为什么比较低?

闭环,开源。

在问答上的599个问题,只写接地气的科技内容,欢迎关注。

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

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

处理器缓存设计差异

通常只要了解电脑的人,或多或少应该都了解一些手机的运行机制。处理器、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中调取数据,从而增加了数据处理等待的时间。生动一点来说就是同样是吃饭,苹果是插了一根管子直接到胃里面,把食物倒进去;安卓这是放在碗里面,一勺一勺放到嘴里。

系统的执行和编写机制

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

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

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

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

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

软件交互

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

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

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

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

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

题主想问为什么安卓手机比苹果的卡吧?其实这个问题一时也说不清楚,不过现在安卓手机和苹果已经流畅度也差不多了。 安卓手机卡有几个原因. 1.没有将apk直接编译成机器码,而是通过在安卓手机上即时编译或者安装编译还有闲暇时编译来操作的,这和苹果直接编译为机器码不同。 2. jni耗费了大量时间,鸿蒙据说解决了这个问题

因为ios是基于c语言开发的,c语言的执行速度效率本来就高!而安卓是用低效的java开发的!java的好处是兼容性高,可是在效率和速度上,当然没有c语言高了!

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注