换个角度提高APP性能和质量


内容来源:2017年5月26日,饿了么移动技术部iOS工程师高亮亮在“极光开发者沙龙JIGUANG MEETU—移动应用性能优化实践”进行《新瓶旧酒——换个角度提高APP性能和质量的实践之路》演讲分享。IT 大咖(微信ID:itdakashuo)说做为独家视频合做方,经主办方和讲者审阅受权发布。
前端

阅读字数:2350 | 6分钟阅读web

嘉宾演讲视频回顾及PPT连接:suo.im/1BzjC7
后端

摘要

结合当下火热的移动性能话题和 APM 系统,围绕移动应用性能质量,谈谈如何避开传统解决方案,将其余技术领域的概念如回流重绘,节流防抖、优雅降级以及渐进加强等,经过类比借鉴,做为一个新的角度来思考质量提高问题,并灵活的运用到移动端,从而提高应用的性能,稳定性和可用性。浏览器

刚加入饿了么的时候作了一年左右的业务线,主要是商务平台。在更早以前作过web开发。最近恰好在开发web相关的项目,以为不少东西各个端是共通的,APP端也能借鉴一些东西,把以前的老经验带到移动端上,来作有意思的事情。缓存

分享大纲

第一,移动性能与质量的概述
性能优化

第二,所谓的“新”技术概念的介绍服务器

第三,几点有意思的事和一些困难微信

移动性能与质量的概述

饿了么的用户端不会出现高峰期的现象,订餐时间都选在中午以前的一到两个小时,量级很是大。咱们内部有其余不少业务线,针对与配送人员和商户的客户端,还有供应链,以及内部的沟通工具。咱们内部会简单地作分析优良中差评作分级。网络

最先是以崩溃来算,但后来崩溃在后期并非特别看重。崩溃率高包括ANR多这一类确定是差,只能轮为可用的阶段。而好用的阶段除了UPM作指导性的工做,还要作很是深化的业务,咱们一个框架部对外一直在输出各类SDK,供内部使用。架构

根据设备类型,除了在跑移动端,还有PC以及外围。PC基本上没有跑流量、耗电量的问题。结合主要的业务场景,咱们面临的问题是用户端停留在用户手上的时间很短暂,而商户端和配送端一直开着APP。对配送人员来说优先考虑的是耗电问题,耗电问题在移动端的体现有两点,网络和定位。GPS定位很是耗电,不停定位还要提高精度,是对物流端APP最大的挑战。其次对商户端考虑的是网络的优化和性能,自己网络环境是相对比较好的,咱们主要提高它的APP到达和业务方面。

所谓的“新”技术概念介绍

咱们常常遇到的回流和重绘问题。这个问题很经典,从最初的页面加载到最后绘制在屏幕上。回流是在流失布局下,参照元素的布局坐标一旦发生了改变,那全部依赖它的元素都要重排,从新计算布局位置的过程,尤为消耗UPC。

重绘是不发生重排的状况下从新布局,如今的GPU都那么强大,性能并非瓶颈。

下面是咱们处理商品订单的问题,订单当时是检测到有不少用户的投诉,订单改版以后性能特别差。性能主要是卡在CPU上,CPU在计算的时候是很是慢的。

最终咱们优化的结果很是好。虽然它也要作布局计算,但在快速滚动的时候帧率是达到很是满意的状况,基本上接近于60帧。

前端在滚动页面的时候须要作一些效果,在滚动时监听。在很高的频率下不停地设计元素的位置,会致使滚动时的卡顿问题。而前端用的解决方法就是节流。

咱们的作法还应用于正在开发的APM台。咱们有一个数据收集的问题,数据收集的数额大,频次也快,用户的轨迹分析的数据不少。咱们在服务器传送数据的时候若是失败的话,基本上为了保证数据传输过去,对于非实质性数据必定要把它传过去,就存在了自动重试的问题。我把它定位为“黄金”重试节流策略。

接下来渐进加强和优雅降级。Graceful Degradation是对于出现某种状况不停地作减法。对于外围来说,浏览器的碎片化特别重复,安卓端也有这种问题。若是它的功能不可用,就把这个功能减掉。还有渐进式加强,依赖浏览器IE6,设计一套基本的功能能在上面用,不停地作架构,直到它表现的很是好。利用更优组件,三方做为备选。操做效率会出现问题,操做效率和速度是随着失效部件的增长逐渐降低的。个人设计就是这样的框架,很简单的,先建长连,可控可靠,存在异常就降级。

最后讲法则。零崩溃零错误等于好用;启动时间Main后比Main前重要;二进制大于资源,耗件优化,硬件大于软件。

有意思的事和一些困难

关于耗电问题。手机设备在通信的时候处于休眠期,当你有需求的时候会自动开启活跃期,活跃期和停歇期切换频繁的话,电量就掉的很是快。咱们的弱网判断是针对与它的响应时间,咱们本身作的网络框架能够知道全部的DSR包括数据时间。

咱们拿来以后发现超时间,网络响应时间太长。这种状况下会作节流层,要么不传数据,要么下降发送频率。合理的缓存和批量的传输。你们有时候也会要求实质性很是高的数据日后端发,用户点击一搜就把数据转换成事件,可这样的状况下瞬间发送服务器仍是会崩溃。咱们作一个简单的调整,就是作忍受值。咱们认为数据从生成劳动发送到传输,传输的时候查过最慢的DNS解析是80秒,是很是很是差的网络插件。咱们认为有忍受值,目前设定的单位是60秒钟,60秒钟的数据都认为它是有实时属性、架构的才日后端传。一旦出超过60秒,就从传输队列去掉。对咱们传输的间隔也会调整,除了一系列网络的节流优化,加上这套实施策略,极大地提高了网络的效率和节点问题。

最终咱们还会发现经过APM平台会发现主机解析率特别高的,能达到86%。存在这样的失败率的网络软件,并且仍是每台不停地发,能看到它发送的频率。咱们是天网系统,是会开源的,服务器端的代码也会开源的,只是服务不会去作。

今天基本上就讲这么多,谢谢你们!

相关文章
相关标签/搜索