メソッドの呼び出し回数や実行時間の統計を取ることができる。
グラフ化もサポート
丁寧なインストールマニュアルあり。
hookshot/Documentation/INSTALL.md at master · Cue/hookshot · GitHub
ツールはライブラリ(Objective-C++)とPythonスクリプトから構成される。統計を取るにはあらかじめライブラリを自分のプロジェクトへ組み込み、計測対象にしたいクラスをソースコードで指定しておく必要がある。
HOOKSHOT_PROFILE_CLASS([AppDelegate class]); HOOKSHOT_PROFILE_CLASS([UIWebView class]); HOOKSHOT_PROFILE_CLASS_EXCEPT([AnotherClass class], [NSValue valueWithPointer:@selector(someFrequentlyCalledSelector)], [NSValue valueWithPointer:@selector(anotherFrequentlyCalledSelector)])
アプリの実行中にこのライブラリが計測情報を ~Documentsフォルダへ書きだす。profile.py を実行してそれを統計出力する仕組みのようだ。
いろいろな条件でフィルタすることも可能。
・スレッド指定
$ bin/profile.py --thread WebThread
・正規表現
$ bin/profile.py --message '.*did'
・クラス
$ bin/profile.py --class 'AppDelegate'
他にインスタンス数の統計など
HOOKSHOT_COUNT_INSTANCES(cls);↓結果
HookshotDemo[25220:11303] UIImage: 8 (after dealloc)
なお、このライブラリは非公開APIを使っている。作成者はリリースに支障が無いセットアップ方法を提示しているので利用の際は参照のこと。