Xcode8でSwiftのビルド時間を短縮できるかもしれないUser-Defined Macro

  • 43
    Like
  • 1
    Comment
More than 1 year has passed since last update.

最近似たようなタイトルの記事が投稿されていますが、それとはまた別のお話ということで。
Xcode8になってからなんとなくswiftのビルドが遅い...なんとかならないかということで探していたら、
こちらのstackoverflowに行き着きました。

どうやら、User-Defined マクロに SWIFT_WHOLE_MODULE_OPTIMIZATION=YESを追加してあげると良いよということで試してみました。


スクリーンショット 2016-11-15 18.48.04.png



スクリーンショット 2016-11-15 18.47.57.png


試した結果、 普段の約半分 くらいでビルドが終わるようになりました。
(自分のProjectだと、370秒ほどかかっていたのが、174秒まで縮まりました。)

ただ、普段は差分ビルドが働く分困っていなかったので、今はCI環境の開発版の書き出しで有効にして試運転しています。
まだしっかり確認はしていないですが、ちょっとコードに変更があったときに早いけど同じだけ時間かかりそうな感じはあったので。。

開発版のみ有効にする等はSchemeやConfigurationによって分けられると思うので、お好みで設定してください。

注意

ただ、この回答でも言及されていますが、

I can only assume this is some kind of bug in Xcode 8.0

とあるので、もしかしたら今後同様に動かなくなる可能性もあり得るのでXcodeのバージョンアップ時は注意を払いたいですね。
また、環境によってはうまく動かない?とかもあるので気をつけつつ、ですね。
こちらのstackoverflowでは、Xcode8.0だと動かないかも?とも書かれていますね。

一応僕の環境(Xcode8.1)では問題なく作用してビルド時間はかなり短くなりました。

人によっては恩恵あるかもしれないので、もしお困りでしたらお試し下さい。

参考

http://stackoverflow.com/questions/39547197/xcode-8-0-swift-3-0-slow-indexing-and-building/39949491#39949491
http://stackoverflow.com/questions/39737374/swift-3-compile-time-incredibly-slow/40290084#40290084

余談

そういえば SWIFT_WHOLE_MODULE_OPTIMIZATIONってどこかで見たような...と思ったら、Swift1.2とかその頃の時代で使われていたことがあったようですね。詳しい背景は分かっていないので一旦割愛します。
(ちないにRealm-cocoaでもこれが未だに使われているようだけどどうなんだろうか...?)