性能优化
文章平均质量分 96
Ansel_m
阿里天猫
展开
-
Hook static initializers
先补充:标题中 static initializers 其实应该叫做C++ static initializers and C/C++ __attribute__(constructor) functions。使用 MachOView 打开一个MachO文件,多数情况下会看到这个section__mod_init_func。这个section的用途是什么呢?从名字大概猜测...转载 2019-08-13 10:46:33 · 694 阅读 · 2 评论 -
一种延迟 premain code 的方法
大量的premain代码,不可控,在线上随时都是炸弹。为了让开发者过渡的更“透明“,有了下面的方法。想法来源仍然是两年前的三篇分析Facebook客户端的文章:1- 探索 facebook iOS 客户端 - section fbsessiongkshttps://everettjf.github.io/2016/08/21/facebook-explore-section...转载 2019-08-13 10:45:15 · 421 阅读 · 0 评论 -
Hook所有+load方法(包括Category)
大概两年前刚开始做性能优化工作,为了Hook所有+load方法,是用Hopper先列出所有+load,然后使用CaptainHook在动态库中逐个指定类名来Hook每一个+load方法。写了一篇文章,先后发表到了内网(ATA)和博客,博客文章地址是: https://everettjf.github.io/2017/01/06/a-method-of-hook-objective-c-load/ ...转载 2019-08-13 10:42:20 · 2098 阅读 · 0 评论 -
最简单的启动任务分类
一个“有年头”的App,启动中要做的工作不断的累加,didFinishLaunchingWithOptions中的代码越来越长,AppDelegate.m文件的行数也越来越多。那么是时候分类存放了。App启动中的任务可以简单分为下面几类: 必须最早在主线程初始化的任务 可以子线程执行的任务 可以与2中的任务并行执行的主线程任务 可以在首页显示后子线程执行的任...转载 2019-08-13 10:40:53 · 194 阅读 · 0 评论 -
由「抖音二进制文件重排」想到的
2018年11月份,支付宝发布了一篇文章《支付宝 App 构建优化解析:通过安装包重排布优化 Android 端启动性能》,简单来说这篇文章说明、实践且验证了通过「安装包重排」可以加快Android应用的启动速度。而作为支付宝曾经的一员,很早就知道了这个方案,当时也在想iOS能否有类似的方案,很快找到了一篇“退休”的文档:Code Size Performance Guidelin...转载 2019-08-13 10:36:29 · 3388 阅读 · 0 评论 -
抖音研发实践:基于二进制文件重排的解决方案 APP启动速度提升超15%
背景启动是App给用户的第一印象,对用户体验至关重要。抖音的业务迭代迅速,如果放任不管,启动速度会一点点劣化。为此抖音iOS客户端团队做了大量优化工作,除了传统的修改业务代码方式,我们还做了些开拓性的探索,发现修改代码在二进制文件的布局可以提高启动性能,方案落地后在抖音上启动速度提高了约15%。本文从原理出发,介绍了我们是如何通过静态扫描和运行时trace找到启动时候调用的函数,然后修改编...转载 2019-08-13 10:33:14 · 6007 阅读 · 0 评论 -
iOS应用性能调优的25个建议和技巧
性能对 iOS 应用的开发尤其重要,如果你的应用失去反应或者很慢,失望的用户会把他们的失望写满App Store的评论。然而由于iOS设备的限制,有时搞好性能是一件难事。开发过程中你会有很多需要注意的事项,你也很容易在做出选择时忘记考虑性能影响。这正是我写下这篇文章的原因。这篇文章以一个方便查看的核对表的形式整合了你可以用来提升你app性能的25条建议和技巧。请耐心读完这篇文章,为转载 2017-06-18 19:44:14 · 493 阅读 · 0 评论 -
iOS安装包瘦身指南
先看下Apple对安装包大小的限制:资源优化1.删除无用资源解压ipa文件,检查是否有无用资源存在。现在应该没有APP需要支持iPhone4以下的机型了,所以1X的图片可以全部删掉。3X的图片是保留还是删掉看具体情况。重复的图片分两种,一种是名字一样的图片,如果你使用.xcassets来管理图片,那么Xcode的左边栏会有警告提示图片名字重复,直接按转载 2017-08-22 11:56:01 · 409 阅读 · 0 评论 -
iOS App 稳定性指标及监测
前言一个iOS App的稳定性,主要决定于整体的系统架构设计,同时也不可忽略编程的细节,正所谓“千里之堤,溃于蚁穴”,一旦考虑不周,看似无关紧要的代码片段可能会带来整体软件系统的崩溃。尤其因为苹果限制了热更新机制,App本身的稳定性及容错性就显的更加重要,之前可以通过发布热补丁的方式解决线上代码问题,现在就需要在提交之前对App开发周期内的各个指标进行实时监测,尽量让问题暴漏在开发阶段,然转载 2017-12-01 21:17:47 · 3093 阅读 · 0 评论 -
iOS图片加载速度极限优化—FastImageCache解析
FastImageCache是Path团队开发的一个开源库,用于提升图片的加载和渲染速度,让基于图片的列表滑动起来更顺畅,来看看它是怎么做的。优化点iOS从磁盘加载一张图片,使用UIImageVIew显示在屏幕上,需要经过以下步骤:从磁盘拷贝数据到内核缓冲区从内核缓冲区复制数据到用户空间生成UIImageView,把图像数据赋值给UIImageView如果图转载 2017-12-01 23:03:00 · 1627 阅读 · 0 评论 -
iOS 异步图片加载优化与常用开源库分析
1. 网络图片显示大体步骤:下载图片图片处理(裁剪,边框等)写入磁盘从磁盘读取数据到内核缓冲区从内核缓冲区复制到用户空间(内存级别拷贝)解压缩为位图(耗cpu较高)如果位图数据不是字节对齐的,CoreAnimation会copy一份位图数据并进行字节对齐CoreAnimation渲染解压缩过的位图以上4,5,6,7,8步是在UIImageView的setImage时进行的,所以默认转载 2017-12-02 23:13:26 · 770 阅读 · 0 评论 -
iOS耗电量检测与优化
耗电量检测1.进入手机"设置" -> "电池",可以直观的看出来手机应用的耗电情况.IMG_0014.PNGIMG_0015.PNG2.使用xcode打开你的工程,然后插上手机,使用真机running项目(必须是真机),然后comand + 6,点击Energy Impact 蓝色表示--合理,黄色--表示程序比较耗电,红色--表示仅仅轻度使用你的转载 2018-02-01 11:57:26 · 3930 阅读 · 1 评论 -
iOS 25个性能优化/内存优化常用方法
1. 用ARC管理内存ARC(Automatic ReferenceCounting, 自动引用计数)和iOS5一起发布,它避免了最常见的也就是经常是由于我们忘记释放内存所造成的内存泄露。它自动为你管理retain和release的过程,所以你就不必去手动干预了。忘掉代码段结尾的release简直像记得吃饭一样简单。而ARC会自动在底层为你做这些工作。除了帮你避免内存泄露,ARC还可以帮你转载 2018-02-01 15:01:02 · 9074 阅读 · 0 评论 -
iOS 如何缩小包体的大小 (静态库,IPA)
这几天被静态库的大小给吓到了,添加了非常多的功能后导致包体达到了60M,这肯定是无法忍受的。网上搜索了几个比较好用的方法,这里总结下,1、配置编译选项 (Levels选项内)Genetate Debug Symbols 设置为NO,这个配置选项应该会让你减去小半的体积。2、舍弃架构armv7,因为armv7用于支持4s和3gs,4s是2011年11月正式上线,虽然还有小部分人在使用...转载 2016-10-31 10:36:07 · 1665 阅读 · 1 评论 -
今日头条iOS客户端启动速度优化
应用启动时间,直接影响用户对一款应用的判断和使用体验。头条主app本身就包含非常多并且复杂度高的业务模块(如新闻、视频等),也接入了很多第三方的插件,这势必会拖慢应用的启动时间,本着精益求精的态度和对用户体验的追求,我们希望在业务扩张的同时最大程度的优化启动时间。技术调研先说结论,t(App总启动时间) = t1(main()之前的加载时间) + t2(main()之后的加载时转载 2017-06-18 19:42:29 · 699 阅读 · 0 评论