十万万个为什么
-知其然,知其所以然-
科普
第23期
你能一口气想到几个原因
苹果手机运存高吗?
不高,与安卓机型比,少的不是一星半点。
安卓机型已经发展到8G运存,而苹果手机的运存最高也才3G,处理器最高也才6核(如iPhoneX)。
吊诡的是大家都感受到苹果手机却比安卓手机流畅度要高,这就不得不让人佩服了。
虽然安卓手机已经做了很大改善,不像当初那般稍微用的久一些,就会频频卡顿。但在手指触碰到屏幕的那一瞬间,还能感受到安卓特色般的“生硬”感,不像苹果手机“干脆利落”带来的别样流畅感。
这到底是什么原因造成的呢?
一、系统环境迥异
“买IOS赠手机”可以说是对苹果系统最生动的描述了,事实也证明IOS系统不负众望。
IOS凭借着强大的统一性和可控性,让一切程序都是井然有序的运行。
打个比方,IOS系统就像一支政令统一、纪律严明的武装部队,一道命令下去,很快就能落实。
反观Android就不同了,除了要保证现有的硬件能有顺畅运行,还要确保那些厂商提供的各种未知的组合硬件,可控环境差很多。
这就好比一支部队除了要打仗,还有兼顾修路等各种杂七杂八的事,职责模糊,一旦任务发生冲突,自然也就无所适从,影响效率。
二、优先次序不同
大家或许都有这样一种感受:
同一个应用程序,在苹果手机上和安卓手机上打开时,后者总比前者慢那么一点。
这是什么原因造成的呢?那是因为二者的响应顺序不同。
IOS对屏幕的响应顺序是:触摸→媒体→服务→架构,而安卓是:程序→框架→屏幕显示资源→架构。
这也就是说,打开一个应用程序时,触摸的一瞬间苹果手机就有反应了,而安卓手机还有“考虑”一会才有反应。
这个过程看似很短,但在具体使用过程中,还是明显能够感觉到。
结果苹果手机自然要给人的感觉快一些。
三、开发环境不同
Android采用的是Java虚拟机堆技术,而IOS的开发语言为Objective—C。
Java虚拟机堆技术本质上是一次解释多条命令,通过多开虚拟机堆提高解释成指令的速度,提高了java软件在手机上运行的速度。
说的更直白些就是一道命令下达时事先需要解释,这就造成cpu在等待数据过程中浪费时间,数据从手机内存到cpu需要时间。
而解释又不是一次就能搞定,可能需要多次才可以解释完成指令,送到虚拟机里执行。
这就像一个公司董事长要举行活动,然后把任务下达给各部门经理并做了详细介绍,然后再由中层领导向普通员工传达,由于沟通不到位,需要董事长、经理、员工之间多次沟通才能把事情搞清楚。
这样自然要耽误时间,慢下来也在情理之中了。
Objective—C在运行过程中不需要虚拟机在中间插手,是系统本身运行程序的执行过程,执行效率自然很高。
好比董事长直接面对底层员工,省去中层领导这个环节,效率自然会高一些。
四、运行机制不同
IOS的后台是“伪后台”,Android的后台是“真后台”。
这是什么意思呢?
IOS在运行时看起来打开了很多应用程序,但是除了当前运行的之外,其他的程序在后台都处于“睡眠”状态。
就像你用苹果手机同时打开了