ios app性能优化有哪些方面?
当我们使用iOS或Android手机时,第一步是滑动屏幕解锁并找到相应的程序并点击进入。这时候往往是所有操控的第一步。iOS产品表现出流畅的一面,而Android产品却给人一种卡壳的现象,更不用说进一步深入的游戏玩法或者其他操控了。这是为什么呢?
其实这跟两个系统的优先级有关。iOS的屏幕响应优先级最高,响应顺序为触摸-媒体-服务-核心架构。换句话说,当用户触摸屏幕时,系统会优先考虑屏幕显示,即触摸级别,然后才是媒体、服务和核心架构。Android系统的优先响应级别是应用-框架-库-内核架构,与显示相关的图形图像处理属于库。可以看到是第三名。当你触摸屏幕的时候,Android系统会先激活应用,然后边框才是屏幕,最后才是核心架构。
侧重点不同,导致iOS产品和Android手机在操控过程中表现不同。当你滑动屏幕进行控制时,iOS系统会优先考虑触摸级别,而Android系统会第三次响应库级别,这也是造成两者流畅度不同的因素之一。
第二,硬件配置不同:iOS基于GPU加速。
目前在智能手机的硬件竞争中,其实处理器的配置已经到了一个瓶颈期,各大旗舰产品在硬件竞争上基本没有太大差别,而这个时候GPU就成了凸显差异的重要因素。一些大型软件,比如3D游戏,对GPU性能的要求更高。苹果iPhone产品使用的Power VR SGX系列GPU是目前非常主流的,跑分测试数据证明不会比一些安卓旗舰产品差。
而iOS系统中图形的各种特效处理,基本都是基于GPU硬件加速的。它可以通过GPU进行渲染,实现更流畅的控制性能,而不完全依赖CPU或程序本身。但Android系统的产品却不是这样,因为Android需要适应不同的手机硬件,满足各种不同的配置,所以很多图形特效大多是程序自己加速渲染的,严重依赖CPU运行的操作自然会增加处理器的负荷,从而造成卡顿的问题。虽然在Android 4.0、4.1等更高版本中默认开启硬件加速,但仍然无法实现所有特效的GPU加速。很多安卓手机都有“是否开启GPU渲染”的功能选项,但开启后的提升微乎其微。
屏幕第一响应的优先关系,再加上iSO本身的GPU加速器的特性,让大家觉得iOS手机在操控过程中流畅度不错。因为它的整个过程都是为最大的流畅度服务的,无论是滑动接触屏幕的第一印象,还是你进一步使用程序后更深层次的操作。GPU的加速应该是它比Android系统更流畅的另一个因素。
第三,开发机制不同:Android机制效率低下。
Android的编程语言是JAVA,而iOS的编程语言是Objective-C,但如果说Android系统因为JAVA开发语言而有些卡顿,或者和Objective-C比较,肯定有人会质疑。Objective-C的优势是高效但独特,而JAVA的优势是跨平台,但运行效率相对较低。其实这两种编程语言带来的不同机制造成了各自系统之间的流畅性分化。
iOS的Objective-C,编译器gcc,这个gcc编译的代码被苹果针对iOS架构优化到了极致,运行过程中不需要虚拟机介入,执行效率自然高。这段话应该是iOS系统本身运行程序的执行过程,而Android是通过JAVA虚拟机执行的,系统需要占用大量内存来换取执行速度,再加上不规则的自动内存回收机制,直接导致了卡顿现象的出现。
Android的JAVA编程本身效率就不如Objective-C,再加上内存自动回收的机制,造成了一些不流畅的现象。但是根据技术上的解释,现代JAVA虚拟机的效率已经不是最大的瓶颈,卡死现象在Android 4.0系统版本之后有了明显的改善,所以这也是部分用户没有发现自己新买的Android手机卡死现象太多的原因。看起来编程语言和机制被Android改进了,这也不是导致其流畅度偏离iOS的唯一因素,但影响是实实在在的。
第三,系统设计不同:安卓APP无法统一。
由于iOS产品的封闭性,所有的app都是单一的,因为每个应用都是在iPhone、iPad等iOS产品中运行的,它们的硬件利用效率很高。因为iOS系统的配件供应商很少,而且CPU一年换一次,不像安卓终端一年换一次。开发者很难看到未来会包含多少种终端分辨率,会包含哪些GPU驱动等等。所以相对来说,Android应用的开发成本高,收益慢。IOS应用开发得益于软硬件的垂直整合,让苹果自然保证了应用本身与硬件产品的完美结合。
事实上,Android和iOS在app开发上的差异也是由其开发性和非开放性的特点造成的。如果你拿旗舰安卓手机加一个专门为这款旗舰产品设计的游戏和苹果的iPhone对比,你真的不会遇到安卓旗舰机卡顿延迟的问题。为什么?因为这款游戏是为这款手机设计的,所以在软件和硬件方面都做到了最大限度的兼容和优化,自然不会有任何的停滞。
Android系统程序要安装在各种符合要求的手机上,开发者无法开发所有的机种,只能在主流机器上测试,保证运行效果,所以不得不降低游戏体验来达到高中低档都可以用的效果。最后,大量占据安卓终端份额的大众用户因为手机不是旗舰产品而无法获得流畅的体验,自然会引发安卓产品不如iOS流畅的抱怨。
iOS产品是感觉比Android流畅还是真的比它流畅,其实原因很简单。苹果会花一年甚至两年的时间去开发一个桌面图标,一个字体,测试屏幕点,但是安卓终端里除了Nexus系列之外似乎没有多少产品能花这么长的时间去做这么细致的事情。有网友说得好。Android做的更多的是“让系统运行起来”,而iOS有苹果做的更多的是“让系统以最高的效率运行起来”。或许这就是iOS产品比Android流畅的原因。但更好的一面是,随着谷歌对Android的不断升级,以及各厂商对自身产品的有序完善,越来越多的Android终端正在摆脱流量不畅的束缚,未来Android用户的期待也有望得到更好的满足。