十万。为什么?
-知道为什么,知道为什么-

科学普及
第23期
你能一口气想出几个理由吗?
苹果手机高吗?
不高。和安卓机型比,一点也不差。
安卓已经发展到8G存储,而苹果手机最高只有3G存储,处理器最高只有6核。
矛盾的是,大家都觉得苹果手机比安卓流畅,让人佩服。
安卓手机虽然有了很大的改进,但是使用时间比以前稍微长一点就不会频繁卡顿了。但在手指接触屏幕的瞬间,依然能感受到安卓一样的“生硬”感,而不像苹果手机“干脆利落”带来的另一种流畅感。
这是什么原因造成的?
首先,系统环境非常不同
“买IOS当手机礼物”可以说是对苹果系统最生动的描述,事实也证明IOS系统不负众望。
IOS凭借其强大的统一性和可控性,使得所有程序运行有序。
比如IOS系统就像一个政令统一、纪律严明的武装力量,一声令下就能很快执行。
另一方面,Android则不同。除了要保证现有的硬件能够流畅运行,还要保证那些厂商提供的各种未知组合硬件有着差很多的可控环境。
就像一支军队,除了打仗,还要管各种杂七杂八的事,比如修路。它的责任是模糊的。任务一旦冲突,自然会无所适从,影响效率。
第二,不同的重点
也许每个人都有这样的感觉:
在苹果手机和安卓手机上打开同一个应用,后者总是比前者慢一点。
这是什么原因造成的?那是因为两者的反应顺序不同。
IOS屏幕的响应顺序是:触摸→媒体→服务→架构,而Android是:程序→框架→屏幕显示资源→架构。
也就是说,你打开一个应用,苹果手机一碰就会有反应,而安卓手机要“考虑”一段时间才会有反应。
这个过程看似很短,但在具体使用过程中还是能明显感受到。

这样一来,苹果手机自然给人速度更快的感觉。
第三,发展环境不同
Android使用Java虚拟机堆技术,而IOS开发语言是Objective-C。
本质上,java虚拟机堆技术是一次解释多个命令。通过开放更多的虚拟机堆,提高解释指令的速度,提高手机上运行Java软件的速度。
说的更直白一点,当一个命令发出后,需要提前解释,导致cpu在等待数据的过程中浪费时间,数据从手机内存到达cpu需要时间。
但是解释不是一次就能完成的,解释完的指令,送到虚拟机执行,可能需要很多次。
这就像公司董事长举办一个活动,然后把任务交给各部门经理并做详细介绍,再由中层领导传达给普通员工。因为沟通不到位,需要董事长、经理、员工多次沟通才能把事情说清楚。
浪费时间是自然的,放慢脚步也是合理的。
Objective-C在运行过程中不需要虚拟机介入。是系统本身运行程序的执行过程,执行效率自然很高。
比如董事长直接面对底层员工,省略中层领导,效率自然会更高。
第四,运行机制不同
IOS的后台是“伪后台”,Android的后台是“真后台”。
这是什么意思?
当IOS运行时,似乎有许多应用程序是打开的,但除了当前运行的应用程序外,其他所有应用程序都在后台“休眠”。
就像你在苹果手机上同时打开了微信、支付宝、微博、王者荣耀等应用,如果你目前使用的是支付宝,其他的就不再运行了。
安卓就不一样了。只要不手动退出,后台程序就会一直运行。
也就是说,如果你现在用的是支付宝,其他几个程序看似没用,其实还在运行。
也就是安卓系统是很多手机厂商定制的,往往捆绑了大量的软件,这些软件都得有高内存支持。
动词 (verb的缩写)不同的国内外环境
国外用安卓手机的人可能都有一种感觉。虽然流畅度和苹果有一点差别,但是没有国产的那么明显。
我就纳闷了,外国的月亮是不是更圆?
其实都是国产手机软件做出来的。我们平时下载的app还是常驻在后台,互相唤醒。

也就是说,看似我们关闭了一个APP,其实他们一直在后台偷偷的躲着。
更要命的是,如果我们打开一个APP,它总是要求已婚有孩子,甚至一起叫隔壁老王,不卡才怪。
国外这种情况会轻很多,顺滑度自然会好很多。
就是国内的App下载后,CPU负载远远高于国外。就好像一个人总是承受着巨大的压力。整个人能精神焕发吗?
-结束-


