联系
我们
投稿
反馈
评论 返回
顶部

内容字号: 默认 大号超大号

段落设置: 段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

iOS和Android到底谁更流畅?技术帝分析

2018-05-14 19:31 出处:互联网 人气: 评论(
022天津交友网 star478 无限元素轮回 554434 ccyy star-478 吉尺眀步 小暮カレン 千面风华结局 动漫mm被虐图片

在纠结了很久以后,我决定开个帖子来写iOS和Android,也算是对自己近几年来学习成果的一个总结。这个话题非常大,本人虽尽我所能查证来源,但也难免会有疏漏,有的话欢迎指出。

如果觉得概念太多看不下去就直接看加粗部分就够了。

我希望大家读完我的这篇帖子后,是这样的:

iOS和Android到底谁更流畅?技术帝分析

而不是:

iOS和Android到底谁更流畅?技术帝分析

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

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

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

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

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

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

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

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

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

四、Apple和Android阵营硬件对比

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

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

2、CPU Cache方面。

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

3、GPU方面。

A8配备的PowerVR Series 6XT GX6450运算能力是136.4 Gflops(533MHz)/153.6 GFlops(600MHz),稍微优于801配备的Adreno 330 ,Adreno 430则是324~388.8 GHz(600MHz)【水冷……】。毕竟当时高通设计810的时候就是用来拖4k的,图形性能Adreno 430数据上远优于GX6450,但是GX6450带1334*750相当于801带720p,带1920*1080分辨率性能也足够充裕。

4、晶体管数量。

丧心病狂的A8堆了20亿个晶体管(包括Cache,GPU,dsp),已经赶上810所有8个核的总晶体管数量了。带来了A8极其凶残的单核性能。810单核性能弱于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(Android Runtime)两种,Dalvik是Android于Android 4.4之前所使用的默认Runtime,ART则是Android Runtime,是在4.4时引入的一种新的运行时,在L及以上版本取代Dalvik成为默认运行时,在GC机制、JNI和Stack size上都与dalvik有着很大的不同。Dalvik属于JIT(Jusi-in-time)编译器,ART属于AOT(Ahead-of-time)编译器。反正说了这么多你们只需要知道ART可以直接调用底层效率更高就对了。

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

2、iOS不开源,但是可以知道的是它的Object-C编译器属于GCC编译套装的一部分(感谢@InflationAaron指出:后期应该是转向了苹果主导的LLVM编译器)。

(三)渲染流水线

1、Android 3.0引入了应用端绘图的GPU加速(Hardware Canvas),Android 4.1引入了黄油计划(Project Butter),到4.1可以说Android的渲染机制已经足够优秀,只要按Design Guideline写是轻松让过渡动画达到60fps的。黄油计划包括了:

窗口三重缓冲机制(降低连续丢帧可能性)

垂直同步机制(减小应用端开始绘制到实际屏幕更新的延迟)

GL窗口缓存绘图命令的异步执行(减少应用主线程的阻塞)

分享给小伙伴们:
本文标签:

更多文章

相关文章

  • 蛮便宜
  • 抠门网
  • Copyright © 2002-2014 版权所有