iOS应用性能优化的几个关键点
一、响应优先级差异:iOS对屏幕触控的即时响应
在操作iOS或Android手机时,用户首先进行的是滑动解锁并点击进入应用。这一步通常是操作流程的起点,iOS系统展现出其流畅性,而Android设备则可能显得较为卡顿,尤其是在进行游戏或其他复杂操作时。这是为何?
实际上,这与两个操作系统的优先级设置有关。iOS对屏幕触控的响应优先级最高,其响应顺序为Touch(触摸)--Media(媒体)--Service(服务)--Core(核心)架构。换句话说,用户一接触屏幕,系统就会优先处理显示层,即Touch层级,随后才是媒体、服务和核心架构。而Android系统的响应优先级顺序为Application(应用)--Framework(框架)--Library(库)--Kernel(内核)架构,与显示相关的图形图像处理属于Library层级,排在第三位。用户触摸屏幕后,Android系统首先激活应用,然后是框架,最后才是屏幕和核心架构。
优先级的不同导致了iOS和Android在操作过程中的表现差异。在滑动屏幕进行操作时,iOS系统会优先处理Touch层级,而Android系统则是第三位才响应Library层级,这是造成流畅度差异的一个因素。
二、硬件配置差异:iOS的GPU加速优势
在智能手机硬件竞赛中,处理器等配置已达到瓶颈,旗舰产品在硬件上差别不大。此时,GPU成为凸显差异的关键因素。大型软件如3D游戏对GPU性能要求较高,苹果iPhone采用的Power VR SGX系列GPU在当前市场上非常主流,跑分测试数据表明,其性能并不逊色于一些旗舰级Android产品。
iOS系统对图形特效的处理主要基于GPU硬件加速,无需完全依赖CPU或程序本身,而是通过GPU渲染,以达到更流畅的操作体验。而Android系统产品则不同,由于需要适应不同手机硬件和配置,很多图形特效都需要程序本身进行加速和渲染,这会加大CPU的负担,导致卡顿。尽管Android 4.0及4.1等更高版本将硬件加速设为默认开启,但并非所有特效都能通过GPU加速。许多Android手机都提供了“是否开启GPU渲染”的选项,但开启后的改善微乎其微。
屏幕触控的优先级关系,加上iOS本身的GPU加速特性,使得iOS手机在操作过程中具有不错的流畅性。因为整个流程都在为最大化流畅性服务,无论是初次滑动接触屏幕,还是进一步使用程序后的深层操作都是如此。GPU加速特性也是iOS系统流畅性优于Android系统的因素之一。
三、开发机制差异:Android机制效率较低
Android的编程语言是JAVA,而iOS的则是Objective-C。尽管有人质疑Android卡顿与JAVA开发语言有关,或者将其与Objective-C对比,但这两个编程语言带来的机制差异,已造成各自系统流畅性的差异化。
iOS的Objective-C,编译器gcc,gcc编译出的代码被苹果针对iOS架构进行了极致优化,运行过程中无需虚拟机介入,执行效率自然很高。这段话描述了iOS系统运行程序的执行过程,而Android则是通过JAVA虚拟机执行,系统需要占用大量内存以换取执行速度,再加上不定期的内存自动回收机制,直接导致卡顿现象的出现。
Android的JAVA编程本身运行效率低于Objective-C,再加上内存自动回收机制,导致了一些卡顿和流畅度问题。但据技术人员介绍,现代JAVA虚拟机效率已不再是瓶颈,Android 4.0系统版本之后的卡顿现象明显改善,这也是用户没有发现新买的Android手机卡顿现象的原因。编程语言和机制已被Android改善,但这并非造成其与iOS流畅性偏差的唯一因素,但影响是实实在在存在的。
四、系统设计差异:Android APP难以统一
由于iOS产品的封闭性,所有APP运行对象都比较单一,因为每个应用程序都是运行在iPhone、iPad等iOS产品上,它们具有很高的硬件利用效率。iOS系统的配件供应商只有几家,CPU每年更换一次,这与Android终端年年变化、月月更新的情况不同,开发者很难预测未来终端分辨率和GPU驱动等,因此Android应用开发成本较高且收益较慢。而iOS应用开发由于软硬件垂直整合,因此受益,苹果自然保证了应用与硬件产品的完美结合程度。
实际上,Android和iOS两大系统APP开发情况的不同,正是它们开放和不开放特性所造成的。如果将专为旗舰Android手机设计的游戏与苹果iPhone运行对比,你不会遇到Android旗舰机卡顿延迟的问题,因为这款游戏针对这款手机进行了软硬方面的最大兼容和优化,自然不会出现停滞现象。
而Android系统程序需要安装在各种符合要求的手机上,开发者无法针对所有机器型号进行开发,只能在主流机器上进行测试并保证运行效果。为了兼顾整个产品线,他们不得不降低游戏体验,以达到高中低产品可以共用的效果。最后,大量占据Android终端份额的大众用户由于自己的手机不是旗舰产品,无法获得流畅的使用体验,自然而然就会抱怨Android产品不如iOS流畅。
而Android系统程序需部署于各式各样达标手机上,开发者亦难以针对所有机型一一开发,仅能在较主流机型上测试以确保运行表现,因此他们为了涵盖整个产品线,不得不牺牲部分游戏体验,以确保高中低档产品均能共用。最终,那些占据Android市场份额的大众用户,因自身手机非旗舰产品,无法享受流畅的操作体验,自然会发出Android产品不及iOS流畅的怨言。
不论iOS产品在感觉上比Android流畅,抑或确实如此,究其原因其实颇为简单。苹果会投入一年甚至更长时间去研发一个桌面图标,一种字体,并测试屏幕触控点,而除了Nexus系列外,Android设备似乎鲜有产品能投入如此长时去进行如此细致的工作。有网友指出,Android所做的更多是“让系统运行”,而iOS则是由苹果倾注更多心血,力求“让系统以最高效的方式运行”,或许这正是iOS产品比Android更流畅的缘由。然而,更值得期待的是,随着谷歌对Android的持续优化以及各厂商对自家产品的逐步改进,越来越多的Android设备正在摆脱卡顿与流畅性的困扰,未来安卓用户的期待同样有望得到更充分的满足。