關(guān)于instruments總共分為19篇文章對(duì)它每一個(gè)功能進(jìn)行介紹。
首先給大家介紹一下什么是instruments,作為一個(gè)程序員,編程并不難,難得是如何優(yōu)化你的代碼,提高app的性能。而instruments就是這樣一個(gè)工具,優(yōu)化應(yīng)用程序的性能,尋找代碼的bug,分析代碼的利弊。
下面我們通過(guò)循環(huán)打印來(lái)對(duì)時(shí)間分析器這個(gè)功能進(jìn)行講解
@implementation ViewController
- (void)viewDidLoad {
??? [super viewDidLoad];
??? [self OCprint];
??? [self Cprint];
}
//循環(huán)打印100次
- (void)OCprint{
??? for (int i = 0; i < 100; i++) {
??? NSLog(@"%d",i);
}
}
//循環(huán)打印50次
- (void)Cprint{
???? for (int i = 0; i < 50; i++) {
??? NSLog(@"%d",i);
?}
}
接下來(lái)我們只需要按住command + i 就會(huì)彈出以下界面

點(diǎn)擊紅色箭頭指向的圖標(biāo),就會(huì)出現(xiàn)以下界面

1:暫停/開(kāi)始按鈕
2:記錄按鈕,用來(lái)收集數(shù)據(jù)
3:記錄時(shí)間
4:顯示收集到的數(shù)據(jù)
5:顯示收集到的數(shù)據(jù)展示形式
6:代碼時(shí)間占比的詳細(xì)功能面板
7:功能面板的顯示設(shè)置
點(diǎn)擊記錄按鈕出現(xiàn)如下界面

Separate by Thread: 每個(gè)線程分開(kāi)考慮。
Invert Call Tree:從上倒下跟蹤堆棧。如FuncA{FunB{FunC}} 勾選此項(xiàng)后堆棧以C->B-A 把調(diào)用層級(jí)最深的C顯示在最外面
Hide System Libraries: 隱藏系統(tǒng)的代碼
Flatten Recursion: 遞歸函數(shù), 每個(gè)堆棧跟蹤一個(gè)條目
Top Functions: 顯示一個(gè)函數(shù)的總時(shí)間。例如函數(shù)A內(nèi)部調(diào)用B,那么顯示的時(shí)間為A實(shí)現(xiàn)的時(shí)間加B實(shí)現(xiàn)的時(shí)間。
勾選上以下幾項(xiàng),只顯示我們自己寫的代碼所花費(fèi)的時(shí)間

其中main函數(shù)花了MainThread的54.8%時(shí)間,OCprint方法花費(fèi)了13ms,Cprint方法花費(fèi)了4ms。
如果覺(jué)得這樣還不清晰,可以雙擊對(duì)應(yīng)的方法,會(huì)展示對(duì)應(yīng)的代碼所花費(fèi)的時(shí)間(x代表毫秒)或者時(shí)間比。