LoginSignup
23
20

More than 5 years have passed since last update.

Macのスペック上げたらSwiftビルド時間が5分から1分になりました

Last updated at Posted at 2016-04-29

株式会社Nanameue(http://nanameue.jp/?lang=ja)
iOSエンジニアのbatiです

Objective -CからSwiftに乗り変えて2か月。
今は新規プロジェクトをPure Swift でやっている状況で、
そろそろ、Swift最高じゃんもうObjective-Cには戻れないわ
と感じている頃です。

Swiftは非常に便利なのですが、プロジェクトが大きくなるとコンパイルに時間がかかる時がかかることがしばしばあることが問題視されています。

具体的な状況

・ 環境 Macbook Air メモリ8G
・ Xcode version 7.3
・ 言語 Swift2.2
・ Swiftファイル200(リリース時期になるとおそらく250くらいにはなるでしょう、今後アップデートも含めると最高300にはなりそうです)

ググった結果

こういう時はググりましょう
ということでググった結果以下の記事が出てきました

型推論をなくそう系
http://cocopon.me/blog/?p=5447
http://qiita.com/rizumita/items/913b05d799b3712260f6

複数のmoduleにしてみたら系
https://developers.eure.jp/ios/advent-calendar-18/

いやいや全てを一つのSwift.fileで書いてみたら系
https://speakerdeck.com/mpon/swift-compile-time-is-so-slow

一通りやってみた結果

型推論をなくそう系
とりあえず、わかりきってる型でも型推論allなしでしてみた結果 20秒短縮

複数のmoduleにしてみたら系
これはそもそもめんどくさい

いやいや全てを一つのSwift.fileで書いてみたら系
これは全体の1/10くらいで挫折しましたが、ビルド時間3秒でした

まあ、ググってやってみたが、そんなに効果はない

そもそもなぜObjective-Cに比べて遅いのか

Swiftにはクラスをimportするという概念がないからです。importするのはmoduleだけで、
publicなクラスを作った時点で、全てのfileからアクセスできます。
つまり、全てのfileからアクセスできるようにするのに、時間がかかるということです。

またSwiftのコンパイラの仕組みは以下の記事が非常に参考になりました

ではどうやって解決すればいいのか

このままでは、Swift.file300に到達してしまいます。

そんな状態でarchiveしたらどうなるでしょう。。。

そこで弊社社長のツルの一声

Mac Proにしたら良くなると思うよ、買ってあげようか

なんてホワイトなベンチャー企業でしょうか

会社の金で買っていただいた27万のMac Proで早速試したところ、

build時間が5分→1分に!!!!!!

ということで、皆さんもこれを機にMac Proにしてみましょう

23
20
1

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
23
20