iOS应用启动时间
转自:iOS 知识小集
如果我们想知道程序启动的时间,则可以在工程的scheme中添加环境变量DYLD_PRINT_STATISTICS
,如图1所示。这样在调试时,可以在控制台打印出程序启动过程中各个阶段所消耗的时间。
我们运行程序就可以看到应用的启动时间,每个阶段的耗时。
total time: 479.79 milliseconds (100.0%)
total images loaded: 119
total segments mapped: 454, into 42288 pages with 2946 pages pre-fetched
total images loading time: 218.66 milliseconds (45.5%)
total dtrace DOF registration time: 0.05 milliseconds (0.0%)
total rebase fixups: 833,487
total rebase fixups time: 75.39 milliseconds (15.7%)
total binding fixups: 104,307
total binding fixups time: 37.48 milliseconds (7.8%)
total weak binding fixups time: 0.17 milliseconds (0.0%)
total bindings lazily fixed up: 0 of 0
total time in initializers and ObjC setup: 148.02 milliseconds (30.8%)
libSystem.dylib : 122.52 milliseconds (25.5%)
libBacktraceRecording.dylib : 2.78 milliseconds (0.5%)
libc++.1.dylib : 0.33 milliseconds (0.0%)
CoreFoundation : 2.65 milliseconds (0.5%)
CFNetwork : 0.03 milliseconds (0.0%)
vImage : 0.01 milliseconds (0.0%)
libLLVMContainer.dylib : 1.36 milliseconds (0.2%)
libGLImage.dylib : 0.12 milliseconds (0.0%)
QuartzCore : 0.04 milliseconds (0.0%)
libViewDebuggerSupport.dylib : 0.05 milliseconds (0.0%)
total symbol trie searches: 48920
total symbol table binary searches: 0
total images defining weak symbols: 8
total images using weak symbols: 31
而且在iOS 10中,对输出的内容做了简化,如图2所示,简单易懂。这样,我们就可以有针对性去优化我们的启动流程。
另外,如果嫌弃控制台输出的乱七八糟打印太多,可以在上面相同的位置添加OS_ACTIVITY_MODE
,value 设置为disable即可。
参考
iOS应用启动时间的更多相关文章
- iOS MachO
一.前言 1.1 程序和进程 广义上的程序就是一个静态的可执行文件,是由一个已经编译好的指令和数据集合的一个文件.就像通过 Xcode 编译好的 Mach-O 文件.而进程则是一个动态的概念,是程序的 ...
- iOS 动态 Framework 对App启动时间影响实测
最近看到的Slow App Startup Times里提到: The dynamic loader finds and reads the dependent dynamic libraries ( ...
- 实测iOS Dynamic Framework 对 App 启动时间的影响效果
最近看到的Slow App Startup Times里提到: The dynamic loader finds and reads the dependent dynamic libraries ( ...
- iOS 启动时间优化
在 WWDC 2016 上首次提到了关于 App 应用启动速度优化的话题:Session 406 Optimizing App Startup Time. 一.冷启动与热启动 热启动是,APP会恢复之 ...
- iOS 如何优化 App 的启动时间
App 运行理论 main() 执行前发生的事 Mach-O 格式 虚拟内存基础 Mach-O 二进制的加载 理论速成 Mach-O 术语 Mach-O 是针对不同运行时可执行文件的文件类型. 文件类 ...
- iOS项目启动及启动时间优化
app的启动入口Main函数: int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc ...
- Facebook iOS App如何优化启动时间
http://www.cocoachina.com/ios/20160105/14870.html 提高 Facebook 应用的性能已经成为 Facebook 持续关注的领域.因为我们相信一个高性能 ...
- 25条提高iOS App性能的建议和技巧
这篇文章来自iOS Tutorial Team 成员 Marcelo Fabri, 他是 Movile 的一个iOS开发者. Check out his personal website or fol ...
- iOS开发app启动原理及视图和控制器的函数调用顺序
main()函数是整个程序的入口,在程序启动之前,系统会调用exec()函数.在Unix中exec和system的不同在于,system是用shell来调用程序,相当于fork+exec+waitpi ...
随机推荐
- Collections、Arrays 简明
Collections : 它的出现给集合操作提供了更多的功能.这个类不需要创建对象,内部提供的都是静态方法. 一般方法 Collections. sort (list); list 集合进行元素的自 ...
- SQL基础-----DDL
1 (My)SQL入门 这里用了(My)SQL这样的标题,目的是介绍标准SQL的同时,也将MySQL在标准SQL上的扩展一同介绍给读者. 2:SQL分类 SQL语句主要可以划分为以下3个类别 .DDL ...
- 开源协议瞎扯淡,什么是 MIT 协议?[转]
图片来源:http://ruby-china.org/topics/15979
- java---interrupt、interrupted和isInterrupted的区别
1.interrupt() interrupt方法用于中断线程.调用该方法的线程的状态为将被置为"中断"状态. 注意:线程中断仅仅是置线程的中断状态位,不会停止线程.需要用户自己 ...
- ●BZOJ 2149 拆迁队
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2149 题解: 斜率优化DP,栈维护凸包,LIS,分治(我也不晓得是不是CDQ分治...) 一 ...
- hdu 5052 树链剖分
Yaoge’s maximum profit Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/ ...
- POJ2187Beauty Contest 旋转卡壳
题目链接 http://poj.org/problem?id=2187 先求凸包 再求凸多边形直径 旋转卡壳模板题 #include<cstdio> #include<cstring ...
- HDU1348 Wall 凸包
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1348 题意:给出一个凸包,求出与凸包距离 L的外圈周长 凸包模板题,练练Andrew算法求出凸包周长再 ...
- bzoj1227 组合数学+bit
1227: [SDOI2009]虔诚的墓主人 Time Limit: 5 Sec Memory Limit: 259 MBSubmit: 1412 Solved: 664[Submit][Stat ...
- 如何理解Spring IOC
Spring IOC 思维导图 要了解控制反转( Inversion of Control ), 我觉得有必要先了解软件设计的一个重要思想:依赖倒置原则(Dependency Inversion Pr ...