Xcode Instruments
Profile
まずはcmd
+ I
を利用してアプリをリリースモードとしてビルドしてみます
そして、Macの方がこういう画面が出ました
Time Profilierをセレクト、右下の「Profile」をクリックします
左上のアイコンをクリックします
レコードを始めます
アプリに戻り、リストをスクロールしたり、詳細画面にクリックしたり、詳細画面から退出したり
色々な操作をします
操作し終わったら、左上のアイコンをクリックしてレコードを終了させます
特定の範囲
ドラッグ操作でこういう落差が激しい部分をセレクト
操作のやり方:
- マウスがHoverして、ターゲットの部分にはダッシュ線が表しています
- ダッシュ線を参考しながら狙う場所までクリックせずに移動します
- ドラッグします、終了の場所までドラッグしてマウスを解放します
ドラッグで範囲を特定していますから
詳細パネルにはその範囲だけの情報を表しています
97.1%のCPUがMain Threadに発生していることが判明されました
他のCPU Coreがあるのに、他のThreadを利用せずにMain Threadに利用しまくることです
option
+ クリックで矢印のアイコンをクリックしたら
全てのものを展開させることができます
メソッド
右下の詳細パネルに黒いフォントのやつがあります
それがうちのプロジェクトで書いているコードです
(灰色のフォントはAppleが書いてくれるコードです)
515
は、このメソッドが0.515
秒を使っています
Invert call tree
画面の下に「Call Tree」をクリック
「Seperate by Thread」と「Invert Call Three」のふたつのチェックボックスにONにします
これで一番重いコードがわかるようになりました
ここが1.09秒かかりました
展開したら、さらに重いコードの核が見つかりました
先ほど詳細パネルでハイライト部分とは同じです
ちなみにCall Treeの「Hide System Library」をクリックすると
Appleが提供されていたコードの部分がなくなりました
Instrumentsから退出
cmd
+ Q
を使って退出します
ファイルをセーブしなくてもいいです
シミュレーターのDebug
cmd
+ R
でデバッグモードで
シミュレーターにアプリをビルドします
ツールバーの「Debug」→「Color Blended Layers」をクリック
- 緑の部分:不透明な場所(Opaque)
- 赤の部分:半透明な場所(Translucent)
- 真紅な部分(さらに深い赤色):複数な透明なView(Transparent)が被っている
真紅な部分は少ない方がいいです
「Color Off-screen Rendered」をクリック
- 黄色の部分:Renderが激しい部分
黄色いは少ない方がいいです
Allocations
cmd
+ I
でリリースモードでビルドします
「Allocations」をクリックして、Chooseをクリックします
右上のアイコンをクリック、レコードを始めます
アプリの画面をスクロールしてみてから、レコードを終了します
「Malloc」はMemory Allocateの意味です
下の検索欄に「UI」を記入して、UIKit関連な項目を探します
「UI~」の項目に注目しましょう
Presistent:作り出された、そしてアプリが起動の間にずっと生きているObjectsの数です
Transitent:一旦作り出されたObjectですが、すでに解放され消滅されている状態のObjectの数です
Discussion