极光开发者沙龙之移动应用性能优化实践旧酒新瓶——换个角度提升app性能与质量

ZachRobin ZachRobin     2022-09-02     389

关键词:

旧酒新瓶——换个角度提升 App 性能与质量

  主讲人:高亮亮 ---   饿了么移动技术部高级iOS工程师,负责饿了么商家版iOS APP开发,对架构和系统底层有深入研究,擅长移动性能分析,trouble shooting,iOS 逆向编程。

  主讲时间:2017-05-26

  

 

  主讲内容:

  1、性能与质量概述:

  2、“新”技术概念的介绍与实践:

  3、违反常规的“真理”:

  

  一、性能与质量概述:

  • 应用分级以及与性能质量的关系

  • 根据设备特点设计提升方案

  • 结合主要业务场景制定优先级 

 

  回流(Reflow)/ 重绘(Repaint)

  

  • 回流:流式布局下,由于参照元素布局框发生变化而导致的布局重新计算。

  • 重绘:元素布局不发生变化的情况下,重新渲染视图。

 

  案例重现:

  

  • 单张订单视图作为重用的基本单元

  • 视图层级复杂,且采用动布局技术

  • 视图不固定,且存在强依赖关系

  • 商品列表在滚动时产生严重回流

 

  二、解决方案

  • 调整视图关系,合理利用重用机制,避免滚动时回流

  • ADK 方案,异步计算布局并缓存,细腻的线程控制

  

 

  节流(Throttle)/ 防抖(Debounce)

  

  案例重现

  失败重试导致的 Self-DDoS  

  • 在保证服务前提下的自动重试,且固定重试频率

  • 忽略错误类型,“一刀切”式的 DFF 设计

  • 重试周期同步,从而导致恶性循环

 

  解决方案:

  • 指数回退 —— 固定重试间隔加倍

  • 添加抖动 —— 随机抖动间隔,避免锁定同步周期

  • 标记重试 —— 优先处理高重试请求

  • “黄金”重试节流策

  

  扩展运用

  • 实时查询防抖 —— 减少网络请求

  • 事件响应节流 —— 避免冗余资源消耗

  • 界面渲染节流 —— 避免大量 CPU 消耗

 

  渐进增强(PE)/ 优雅降级(GD)
  

 

   案例重现:

  基于三方服务的推送系统

  • 同业务对推送的实时性、可靠性要求高且存在差异

  ---➡ 利用更优的组件作为首选,三方作为备选

  • 三方服务不可控,且在实时性、可靠性上都存在不足

  ---➡ 操作的效率和速度随着失效部件的增加逐渐下降

  解决方案:

  

 

  Taco 混合推送框架

设备

平台

系统

前后台

发送数

发送成功数

接收消息数

到达率

红 Note3

Android

MIUI 8

前台(锁 屏)

300

297

267

89.9%

Android

Smartisan OS 3.2.5

后台( 锁 屏)

300

298

250

83.9%

Nexus5

Android

6.0

后台(锁 屏)

300

296

234

79.1%

iPhone 6

iOS

iOS 9.1

前台( 锁 屏)

300

299

299

100%

iPhone 4s

iOS

iOS 8

前台( 锁 屏)

300

296

178

60.1%

 

  稳 => 快 => 省,普适法则

  • 0崩溃&0错误!=好 

  • 启动时间:main() 后 main() 前重要

  • 包体积优化: 进制 > 资源

  • 耗电优化:硬件 > 软件

 

  0 崩溃 & 0 错误 != 好用

  

  

  0 崩溃 & 0 错误 != 好用

  

 

  启动时间:main() 后 main() 前重要

  • main() 前优化点

    ‣ dylib loading —— 多为系统动态库,普遍使用静态库

    ‣ rebase / binding —— 占比低,减少 Class 等行为违反软件工程原则

    ‣ Objc Setup —— 受工程量影响,盲目优化违反工程原则

    ‣ Initializer —— + load 优化,影响工程设计

  • main() 后优化点

    ‣ 屏渲染优化

    ‣ 避免主线程阻塞

    ‣ 关键路径线程优化

 

    包体积优化: 二进制 > 资源                 耗电优化:硬件 > 软件

     

 

  耗电优化:硬件 > 软件

    

   

hololens开发与性能优化实践

...技术社区经过一年的成长也有了很大的扩张,越来越多的开发者开始进入了HoloLens开发领域,尝试着使用混合现实(MixedReality)技术来构建属于未来的创新应用。 HoloLens开发回顾  HoloLens于2016年初正式开始发货,笔者... 查看详情

flutter性能优化实践

...的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、 查看详情

android面试之必问性能优化(代码片段)

对于Android开发者来说,懂得基本的应用开发技能往往是不够,因为不管是工作还是面试,都需要开发者懂得大量的性能优化,这对提升应用的体验是非常重要的。对于Android开发来说,性能优化主要围绕如下方... 查看详情

从页面加载到数据请求,前端页面性能优化实践分享(代码片段)

转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。背景做过前端开发都知道前端的工作内容是很多的,对于HTML、CSS、Javascript、Image、Flash等各种内容的使用。为... 查看详情

应用性能分析神器“透视宝”亮剑之监控宝api监控优化

作者:云智慧KevinKong&AllenZhang企业IT部门在进行互联网/移动应用功能优化过程中最大的痛点在于,明明知道应用存在问题,却难于准确定位具体问题点并快速制定有效的解决方案,此时企业最需要有一套全栈应用性能监控、管... 查看详情

客户端性能测试利器perfdog尝鲜体验

...测试实践后,PerfDog于不久前正式对外发布,开放给全球开发者使用。腾讯的诸多明星产品如王者荣耀、QQ飞车手游、和平精英、微信、微视、QQ浏览器及小程序小游戏等优秀应用均在使用这款性能测试工具平台。 什么是性能... 查看详情

2021androidapp开发工作必知必会之性能优化

AndroidApp启动优化全记录一、应用启动概述1、应用启动的一般流程应用的启动,从桌面点击应用图标到主界面用户可操作,大致遵循下面的流程:可以看到应用启动过程中,最重要的两个进程就是SystemServer和AppProce... 查看详情

reactnative在特赞的应用与实践

...React技术栈构建开发前端项目,并使用ReactNative开发特赞移动APP目前正在使用Node.js开发和维护特赞服务网关,希望Node.js能够在更轻量级的微服务架构中发挥重要作用课程介绍:ReactNative在特赞的应用与实践课程摘要:APP开发技术... 查看详情

上海交大7月7日《敏捷实践之葵花宝典》主题沙龙,约不?

...葵花宝典,上海交大7月7日《敏捷实践之葵花宝典》主题沙龙看上去挺有意思的,约不?【沙龙背景】敏捷,作为整个项目管理知识体系中的一种思维模式,正在通过其独特的方式改变着今天的项目管理做法。在过去20年,敏捷项... 查看详情

cuda优化之layernorm性能优化实践

...姚迟、郑泽康、柳俊丞2020年末,OneFlow发布了《OneFlow性能优化分享:如何实现一个高效的SoftmaxCUDAkernel?》,其中介绍了OneFlow深度优化后的Softmax,尤其对很多框架没有考虑的half类型做了充分优化,使得性... 查看详情

loadrunner11的移动端性能测试之脚本优化

测试步骤之脚本优化(Script)看到这里,是不是疑惑录制好的脚本还需要优化吗,答案是肯定的。优化概要脚本优化包括插入注释(Comment),插入事务(Transaction),插入检查点(Check),插入集合点(Rendezvous),脚本参数化(... 查看详情

cuda优化之layernorm性能优化实践(代码片段)

...姚迟、郑泽康、柳俊丞2020年末,OneFlow发布了《OneFlow性能优化分享:如何实现一个高效的SoftmaxCUDAkernel?》 ,其中介绍了OneFlow深度优化后的Softmax,尤其对很多框架没有考虑的half类型做了充分优化,使得... 查看详情

android移动应用性能优化之友盟(代码片段)

移动应用性能优化之友盟前言正文一、问题1.ANR2.NullPointerException二、友盟使用1.创建平台应用2.使用①日志使用②崩溃分析③自定义版本号前言  今天是程序员节,各位朋友们过得好吗?深圳的天气终于变了,现在... 查看详情

在 React 应用中映射数组以优化性能的最佳实践

】在React应用中映射数组以优化性能的最佳实践【英文标题】:BestpracticeformappinganarrayinReactappforperformanceoptimization【发布时间】:2019-01-2117:47:50【问题描述】:我正在制作一个返回搜索结果的简单字典应用程序。使用字典的内存... 查看详情

转web程序优化的最佳实践:javascript和css篇

...类34条。包括内容、服务器、cookie、CSS、JavaScript、图片、移动应用等 查看详情

从页面加载到数据请求,前端页面性能优化实践分享(代码片段)

...S、Javascript、Image、Flash等各种内容的使用。为了更好提升应用的性能,我们需要对各种资源内容进行不同方面的优化。对用户而言,优化可以让应用的响应速度加快,加载更加迅速,可以带来更好的使用体验。对于服务商而言,... 查看详情

小5聊移动开发性能优化解决卡顿眩晕问题提高用户体验(代码片段)

友盟+应用性能监控平台U-APM目录一、   场景化内容卡顿  1.   项目背景 2.   遇到的挑战 3.   解决步骤 4.   项目总结二、   产品体验内容 1.   集成接入友盟+应用性能监控平台U-APM2.   集成接入使用体验总... 查看详情

布局性能优化:安卓开发者不可错过的性能优化技巧(代码片段)

...;这是一个系列,上一篇是#内存泄漏大集结:安卓开发者不可错过的性能优化技巧也可以看性能优化专栏里的记录,都是非常好的开发经验。当我们开发Android应用时,布局性能优化是一个必不可少的过程。一个高... 查看详情