🔥

Xcode Instruments

2022/07/28に公開

Profile

まずはcmd + Iを利用してアプリをリリースモードとしてビルドしてみます
そして、Macの方がこういう画面が出ました

Time Profilierをセレクト、右下の「Profile」をクリックします

左上のアイコンをクリックします
レコードを始めます

アプリに戻り、リストをスクロールしたり、詳細画面にクリックしたり、詳細画面から退出したり
色々な操作をします

操作し終わったら、左上のアイコンをクリックしてレコードを終了させます

特定の範囲

ドラッグ操作でこういう落差が激しい部分をセレクト
操作のやり方:

  1. マウスがHoverして、ターゲットの部分にはダッシュ線が表しています
  2. ダッシュ線を参考しながら狙う場所までクリックせずに移動します
  3. ドラッグします、終了の場所までドラッグしてマウスを解放します

ドラッグで範囲を特定していますから
詳細パネルにはその範囲だけの情報を表しています

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