55
48

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Xcodeのbuildは非常に遅くとてもイライラします。

Last updated at Posted at 2016-07-05

私は個人的にRailsのプロジェクトも担当していますが、Railsで変更をしたら大概の場合ファイルをsaveするだけで変更が反映されるのに対し、iOS開発では一旦ビルドし直さないといけません。しかもそのビルド時間は数分かかり、集中力が途切れ非常に公立の悪さを感じていました。そこでXcodeプロジェクトのビルド時間短縮を試みて様々な方法があることがわかったのでまとめたいと思います。

全ての下準備: ビルド時間を計測できるようにする

以下のコマンドを打ってから、Xcodeを再起動するとビルド時間が表示されるようになります。

$ defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES

ちなみに私の環境でとあるプロジェクトのビルド時間は179秒でした。一回のビルドにこれだけ時間がかかっていれば集中力が無くなってしまします。

Kobito.SsoWyF.png

処理を並列化する

デフォルトの環境だとXcodeでのビルドは並列処理されないのですが、設定することで並列処理することができます。

下準備: MacのCore数を確認する

下記のCore数を確認できます。

$ system_profiler SPHardwareDataType

Kobito.J8g1Nj.png

これでCore数は2だということが分かりました。

並列数の設定

次に以下のコマンドでコンパイルの同時実行数を2にします

$ defaults write com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks 2

すると114秒となり約65秒も短縮できました。
Kobito.w1BUsf.png

ただし、並列タスク数を上げればいいというわけでもないらしく、並列数をこれ以上上げても芳しい結果は得られませんでした。

並列数4
Kobito.AsWaCr.png

並列数5
Kobito.2S9UII.png

並列数16
Kobito.78JOfo.png

結論としてはコア数と同じが良いということですね。

参考:
http://llcc.hatenablog.com/entry/2016/01/15/235114
http://qiita.com/rizumita/items/913b05d799b3712260f6

dSYMファイル

Xcode7.1からはデフォルトでこの設定になっているのですが、それ以前からあるプロジェクトではそうなっていません。ここで、その設定をしましょう。・・・・・・

結果
Failed to upload Kobito.qhxzKr.png: Unknown error

参考:
http://fnet-tech.blogspot.jp/2016/05/xcode.html

CocoaPodsのコンパイルをスキップする

あまり推奨できる方法ではないですがCocoaPodsでダウンロードしたモノはあまり更新するわけではないのでビルドの度にコンパイルするのは効率的ではありません。そこでこの設定です。
・・・・・・・・・・・・・・

Carthageを導入する

ライブラリ管理にはCarthageもあります。仕組みの違い上Carthageの方が早いので対応しているライブラリはCarthageに移行するのも良いでしょう。

参考: http://qiita.com/nori0620/items/b81ae171f0e82b0c2d8a

他に

コンパイルに時間がかかっているファイルを特定し、改善する

コンパイルに時間がかかっているファイルがあったらそれを改善して早くするというのがあります。
私の場合はこの手法で上手く行く箇所が見つけられませんでしたが、型推論を明示的にすることでコンパイル時間の短縮になることが多いようです。

参考: http://qiita.com/rizumita/items/913b05d799b3712260f6

他にもあれば教えて下さい。

55
48
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
55
48

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?