IOS 项目性能优化
iOS 项目性能优化
- 一, iOS 性能优化概述
- 1. 项目多余图片资源释放
- 2. 缓存图片优化
- 3. 界面卡顿优化
- 4.列表中阴影和圆角的处理
- 5. 代码优化
- 6. 安装包塑身
一, iOS 性能优化概述
- 项目多余的图片资源需要释放
- 选择是否缓存图片. 对imageName方法的使用判断
- 界面卡顿优化
- 列表中阴影和圆角的处理
- 代码优化
- 安装包塑身
1. 项目多余图片资源释放
分析工具LSUnusedResources的使用
整个本地图片资源30M以上, 占用较大空间
大概3M的本地图片资源从来没被使用
2. 缓存图片优化
常见的从bundle中加载图片的方式有两种,一个是用UIImageName,二是用imageWithContentOfFile,第一种比较常见一点。imageNamed
的优点是当加载时会缓存图片。可以参考苹果官方文档imageNamed的文档,
3. 界面卡顿优化
卡顿原因分析:
- Kingfisher框架的使用导致的内存暴涨
- 后台返回的高清大图影响
- layoutSubviews和cell赋值数据的时候处理大量逻辑
解决方法:
设置缓存大小,定时清理缓存
1.设置最大缓存容量
2.页面销毁的时候恢复, 并且删除menoryCache
3.把layoutSubviews的部分设置放到awakeFromNib
4.减少cell赋值数据的时候做过多耗时逻辑
4.列表中阴影和圆角的处理
可以发现现在滚动的性能大大提高了,光栅化对于那些有很多子view嵌套在一起、view的层级复杂或者有很复杂特效效果的图层有很明显的提升,因为这些内容都被缓存到位图当中了。但是使用光栅化需要注意一些内容:
适用于内容基本不变的图层
假如图层的内容经常变化,比如cell里面有涉及到动画之类的,那么缓存的内容就无效了,GPU需要重新创建缓存区,导致离屏渲染,这又涉及到OpenGL的上下文环境切换,反而降低性能。不要过度使用
缓存区的大小被设置为屏幕大小的2.5倍,假如过分使用同样会导致大量的离屏渲染。如果缓存的内容超过100ms没有被使用则会被回收。
5. 代码优化
- 方法抽取
- tableView布局优化
- cell注册完善
6. 安装包塑身
IOS 项目性能优化相关推荐
- 欢乐互娱庞池海:《龙之谷》项目性能优化经验分享
欢乐互娱庞池海:<龙之谷>项目性能优化经验分享 在5月12日,UNITY 2017案例分享专场上,欢乐互娱技术引擎开发工程师娱庞池海分享了<龙之谷>项目性能优化经验.以下为分享 ...
- vuejs项目性能优化 - 总结篇
首页等页面加载慢?打包编译后css/js文件过大?试试压缩.路由懒加载等技术 打包编译后,过大的文件如:app.css.app.js.vendor.js 本着 "开发环境".&qu ...
- vue项目性能优化——断点续传
vue项目性能优化 用户上传文件的时候,如果文件过大,那么上传可能就会很耗时.而且一旦上传的过程中发生了网络中断,那上传就前功尽弃了.为了提高用户的体验,我们可以选择断点续传,也就是把文件切分成小块后 ...
- 项目性能优化之性能问题分析和压力测试
项目性能优化之性能问题分析和压力测试 性能问题分析 为什么要性能优化 影响性能的关键要素 性能优化出发点 性能压力测试 什么是压力测试 压力测试的指标 常用压测工具 性能问题分析 为什么要性能优化 应 ...
- 接手同事vue项目两个月的血和泪,关于vue项目性能优化,缩短首屏加载时间
最近接手了别人做的vue项目,项目跑起来后,有些页面很卡,首屏加载也慢,打包速度也慢.于是,研究了很久vue的项目性能优化,下面我将从两个部分来详解vue项目的性能优化: 代码优化 webpack打包 ...
- Vue项目性能优化篇
Vue项目性能优化是个老生常谈的问题了,本人开发过程中也查过很多关于Vue项目优化的文章,每篇文章说的都差不多,本章我就结合我的心得和大家的智慧做一个总结. 1.懒加载 懒加载应该是提高性能的最简单有 ...
- iOS app性能优化的那些事
iPhone上面的应用一直都是以流畅的操作体验而著称,但是由于之前开发人员把注意力更多的放在开发功能上面,比较少去考虑性能的问题,可能这其中涉及到objective-c,c++跟lua,优化起来相对 ...
- iOS之性能优化·优化App界面的渲染与流畅度
一.界面渲染流程 ① 渲染流程分析 计算机中的显示过程通常是通过 CPU.GPU.显示器协同工作来将图片显示到屏幕上,如下图所示: 苹果为了解决图片撕裂的问题使用了 VSync + 双缓冲区的形式,就 ...
- iOS app性能优化
instruments 在iOS上进行性能分析的时候,首先考虑借助instruments这个利器分析出问题出在哪,不要凭空想象,不然你可能把精力花在了1%的问题上,最后发现其实啥都没优化,比如要查 ...
- iOS之性能优化·提高App的编译速度
一.前言 经过多年的开发和迭代,我相信很多的 iOS 项目代码已经达到几十万行甚至上百万行的规模,所使用的 Pod 库的数量可以达到几十个甚至上百个,App Store 安装包也变得越来越大,在这么大 ...
最新文章
- python相对路径库_如何最简单、通俗地理解Python的搜索路径、相对路径、绝对路径?...
- html如何让边框变圆,CSS怎样做出自适应圆形边框?
- 【408预推免复习】计算机组成原理之CPU的结构和功能
- 答答租车系统(面向对象综合练习)_JAVA
- springboot获取sessionid_Spring Boot 整合Redis, 用起来真简单!
- excel查标准正态分布_用EXCEL简易制作正态分布图
- codeforces:65
- java參数传递机制浅析
- java像sql一样处理数据_像Excel一样使用SQL进行数据分析
- STM32工作笔记0026---平时说的电气烧了是什么意思
- 组装电脑调整分区后分区丢失的资料找回方法
- angular2 图表指令ng2-echarts
- 洛谷1056 排座椅 解题报告
- JVM垃圾回收算法标记清除和复制算法
- iOS中实现plist中读取数据实现Cell的显示(字典转模型,实现按序分组)修改图片的尺寸...
- MYSQL select ....outfile.....from.....
- MongoDb学习(四)--Repository
- Caused by: java.lang.ClassNotFoundException: org.springframework.orm.hibernate4.HibernateTemplate
- 联想小新打印机M7268W配置步骤
- 首都师范 博弈论 5 4 2 Shapley值应用案例