谁说Android没有iOS流畅

本文来自ZEALER+社区

作者:DoubleLee

*本文为作者的独立观点,并不代表ZEALER的立场。

对文中所述有什么想法的话都可以点击左下角跳转到ZEALER+社区中和作者聊聊哦~

写在前面的一些话:

在纠结了很久以后,我决定开个帖子(也是我在ZEALER的第一帖)来写iOS和Android,也算是对自己近几年来学习成果的一个总结。这个话题非常大,本人虽尽我所能查证来源,但也难免会有疏漏,有的话欢迎指出。:)如果觉得概念太多看不下去就直接看加粗部分就够了。我希望大家读完我的这篇帖子后,是这样的:

而不是:

我们应该为这个世界的多样性而感到庆幸,不是么?

一、什么是流畅?什么是卡顿?

如果我们讨论流畅和卡是建立在不同的标准上,一定会变成毫无意义的口水战。在这里,流畅我们定义为运行程序时达到60fps或以上的绘制效率,且尽可能少丢帧。卡顿我们定义为程序运行时无法达到60fps,丢帧频繁。

二、Apple和Android阵营比是不是能带来更流畅的应用体验?

不是。两者都非常顺滑,用久了也都不卡顿。

Android定义为带有GMS推送的,带有良好Android应用生态圈的(包括少数国内优秀应用),具有GooglePlay服务的Android手机,拥有健康使用习惯的Android。包括但不限于Nexus,Moto,SONY,LG,htc,Samsung在没有封杀Google的市场的使用体验。

三、Apple和安卓阵营比是不是能带来更流畅的应用体验?

是。安卓(尤其是用久了)很可能会卡顿。

安卓定义为不带GMS推送的,缺失良好Android应用生态的,不具有GooglePlay服务的,基于各种“深度优化,深度定制,世界第一,跑分天王,etc.”家,配合“动不动就管家卫士全家桶,清理内存释放手机速度,打败全国百分之XX”的用户的安卓生态。

四、Apple和Android阵营硬件对比

Apple硬件处于一个什么样的水平?足够优秀的水平,Apple是著名的硬件狂魔,并不是大家想的iPhone硬件远远不及Android阵营。

1、Android阵营目前的旗舰Soc之一是基于高通的解决方案(MTK和三星,华为的解决方案不是很了解,欢迎补充。当然业界一般认为是三星的CPU14nm制程更先进,所以功耗发热的表现较更好。),它拥有8个CPU核心,20nm制程,主频高达2GHz。纯CPU计算能力,并发计算能力优于A8。但它频率高,核心多,功耗和发热量在密集计算时也会远高于A8,发热会限制的发挥。

2、CPUCache方面。

A8非常慷慨地配备了高达64KB64KB的L1Cache,1MBL2Cache和4MBL3Cache,与上一代A7相同,数据不明。但实际应用来看,似乎配备的Cache喂不饱8个核心,存在CacheMiss的情况。(有硬件信息的朋友欢迎补充)但是,即使没有准确数据的情况下,有一件事情也是可以确定的,那就是CacheperCore数据绝对不如A8。如果要做到一样的水平,那么要配备kbL1Cache,4MBL2Cache,16MBL3Cache。要知道的是,这么多的Cache即使是对于IntelCorei7也是很奢侈的。而如果假设和A8配备了一样的Cache,的CacheperCore数据就很难看了。要知道,CPUCache的速度远高于RAM的速度,所以小Cache带来的情况就是外围I/O经常处于等待状态,延迟了CPU计算能力的发挥。打个比方,你拿跑车引擎配个4速变速箱,引擎的能力就无法发挥了。Cache方面,A8表现优于。

3、GPU方面。

A8配备的PowerVRSeries6XTGX运算能力是.4Gflops(MHz)/.6GFlops(MHz),稍微优于配备的Adreno,Adreno则是~.8GHz(MHz)。毕竟当时高通设计的时候就是用来拖4k的,图形性能Adreno数据上远优于GX,但是GX带*相当于带p,带*分辨率性能也足够充裕。

4、晶体管数量。

丧心病狂的A8堆了20亿个晶体管(包括Cache,GPU,dsp),已经赶上所有8个核的总晶体管数量了。带来了A8极其凶残的单核性能。单核性能弱于A8。

五、系统与运行机制层面

(一)内核

1、又要开始拿Linux和Unix说事了,但很不幸的是,流畅这件事跟系统内核一点关系都没有。

2、说个老梗:

iOS基于Unix所以是Touch(响应触摸操作)——Media——Service——Core架构

Android基于Linux所以是Application——Framework——Library(包含了响应触摸操作的显示相关)——Kernal架构

所以iOS要比Android响应的快,所以iOS更流畅云云

然而这个东西是2.x时代的,Google早就改掉了……我也不知道这种Unix内核性能优于Linux的论调为什么时不时还会冒出来……反正两者都不是实时操作系统(RTOS)。

(二)运行时(Runtime)

1、Android基于Java虚拟机,前段时间还因为这个Google和甲骨文吵上了法庭。算了回归正题,我们主要要说的运行时有Dalvik和ART(AndroidRuntime)两种,Dalvik是Android于Android4.4之前所使用的默认Runtime,ART则是AndroidRuntime,是在4.4时引入的一种新的运行时,在L及以上版本取代Dalvik成为默认运行时,在GC机制、JNI和Stacksize上都与dalvik有着很大的不同。Dalvik属于JIT(Jusi-in-time)编译器,ART属于AOT(Ahead-of-time)编译器。反正说了这么多你们只需要知道ART可以直接调用底层效率更高就对了。

其实是贴主编译原理还没啃熟你们不要打我嘤嘤嘤,有兴趣的自己去看这两个链接



转载请注明地址:http://www.bujiadia.com/bdss/7056.html
  • 上一篇文章:
  • 下一篇文章:
  • 热点文章

    • 没有热点文章

    推荐文章

    • 没有推荐文章