Xcode

【Xcode】ビルド時間をメソッドごとに計測する

はじめに

iOSエンジニアにとって全員に共通することと言っていいのがビルド時間が長いことなのではないでしょうか
今回ビルド時間を短縮するためにできることを書いていこうと思ったのですが、その前にまずはビルド時間を計測できるようにしていきましょう

全体のビルド時間を計測する

ターミナルで

defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES

パスはどこでもよいので、このコマンドを実行することでXcodeでビルドした際にビルドにかかった時間がこのように確認することができます

ここで注意ですがシミュレーターを起動してしまうとこのようにでてこないのでシュミレーターを起動せずに「command + B」でビルドだけするようにしたら時間が出てくるようになります。

メソッドごとにビルド時間を計測できるようにする

これまでだと全体でかかった時間だけしか見られないのでビルド時間を短縮していくためにどの部分のコードをビルドするのに時間がかかっているかを把握する必要があります。
なのでメソッドごとにビルド時間を計測できるようにしていきましょう。
まずは、Xcodeで計測したいターゲットのBuild SettingsのOther Swift Flagsに

-Xfrontend -debug-time-function-bodies

を追加します。

こんなかんじです。
下準備はこれだけ。

ターミナル上で確認したい場合

ターミナル上で確認したい場合は「xcprofiler」を使用しました。
導入方法は

gem install xcprofiler

このコマンドをターミナルで叩けば完了です。
もし、

ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

こんなかんじのエラーが出た場合は、

sudo gem install xcprofiler

でやれば大丈夫だと思われます。

一旦ビルドしてみた後に

xcprofiler [プロジェクト名] [オプション]

で実行できます。
よく使うオプションとしては、

-l 「数字」

で表示したい件数を設定することができます。
詳細はxcprofilerのgithubのページに書いてあります。

こんなかんじになりました。

GUIで確認したい場合

BuildTimeAnalyzer-for-Xcodeというのを使用します。
https://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcode/releases
ここからダウンロードして、projectファイルから開いて起動します。

実行すると下のような画面が出現します。

ここから計測したいプロジェクトを
「command + shift + K」でcleanして
「command + B」でBuildすると
自動的に下の画面が出現して計測結果が出力されます。

メソッドごとに結果が出力されて行を選択するとそのファイルにXcode上で移動できるので便利です。
デフォルトでこのウィンドウが常に手前に来るように設定されているので僕はその設定を外しています。
「Window」→「always in front」のチェックを外せばできます。

おわりに

このように計測できるような環境を整えることができたので次はビルド時間を短縮するための方法をまとめていこうと思います。

参考サイト
http://qiita.com/you_matz/items/e95f30023eccc8d96357