关于instruments总共分为19篇文章对它每一个功能进行介绍。
首先给大家介绍一下什么是instruments,作为一个程序员,编程并不难,难得是如何优化你的代码,提高app的性能。而instruments就是这样一个工具,优化应用程序的性能,寻找代码的bug,分析代码的利弊。
下面我们通过循环打印来对时间分析器这个功能进行讲解
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self OCprint];
[self Cprint];
}
//循环打印100次
- (void)OCprint{
for (int i = 0; i < 100; i++) {
NSLog(@"%d",i);
}
}
//循环打印50次
- (void)Cprint{
for (int i = 0; i < 50; i++) {
NSLog(@"%d",i);
}
}
接下来我们只需要按住command + i 就会弹出以下界面
点击红色箭头指向的图标,就会出现以下界面
1:暂停/开始按钮
2:记录按钮,用来收集数据
3:记录时间
4:显示收集到的数据
5:显示收集到的数据展示形式
6:代码时间占比的详细功能面板
7:功能面板的显示设置
点击记录按钮出现如下界面
Separate by Thread: 每个线程分开考虑。
Invert Call Tree:从上倒下跟踪堆栈。如FuncA{FunB{FunC}} 勾选此项后堆栈以C->B-A 把调用层级最深的C显示在最外面
Hide System Libraries: 隐藏系统的代码
Flatten Recursion: 递归函数, 每个堆栈跟踪一个条目
Top Functions: 显示一个函数的总时间。例如函数A内部调用B,那么显示的时间为A实现的时间加B实现的时间。
勾选上以下几项,只显示我们自己写的代码所花费的时间
其中main函数花了MainThread的54.8%时间,OCprint方法花费了13ms,Cprint方法花费了4ms。
如果觉得这样还不清晰,可以双击对应的方法,会展示对应的代码所花费的时间(x代表毫秒)或者时间比。