64
52

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 5 years have passed since last update.

Xcode8でのSwiftのビルドが遅い

Last updated at Posted at 2016-10-19

この記事の目的

どんな環境で、どれくらいのファイル数のプロジェクトをビルドしたら、とりあえずどのくらいの時間がかかってるのかを知りたい。あと、Swiftのビルドは遅いっての知っておいて欲しい。
Swift書き出したら気持ちいいんだけど、ビルド遅いのはもうやだ。他の人どんな感じなん?
という膜に包んだ愚痴。

解決策を求めてぐぐった→良策なし

仕事に差し支えるレベルで遅いので、とりあえずググった結果、具体的な解決になるような情報はなく(型推論なくせとか・・・)、とりあえずスペックの高いMac買えという結論でした。強力な型推論が強力すぎてマシンを殺す。
差分ビルドも早かったりすごい時間かかったり。

遅いのは遅い

ビルドが遅いのはもうこれ単純にスペック不足なんでしょうね。
n%速くなったっていっても相対的なもんだしね。20分かかるのが10分になったところで、10分もかかってるんですよ。
速いMac買えればそれに越したことはないんですけどね、そうもいかん。

どのくらい時間かかってるのか

とりあえず手元の具体的な環境と、プロジェクトのファイル数とともにビルド経過時間をアップします。

計測の手順

Xcodeにビルド時間を表示するように設定。

terminal
% defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES

Coreの数の確認

terminal
% system_profiler SPHardwareDataType
Hardware:

    Hardware Overview:

      Model Name: MacBook Air
      Model Identifier: MacBookAir7,2
      Processor Name: Intel Core i7
      Processor Speed: 2.2 GHz
      Number of Processors: 1
      Total Number of Cores: 2
      L2 Cache (per Core): 256 KB
      L3 Cache: 4 MB
      Memory: 8 GB
      Boot ROM Version: ***********
      SMC Version (system): *********
      Serial Number (system): ************
      Hardware UUID: ********************************

Boot ROM以下の情報は不要。

Xcodeが使用するCoreの数を指定する

terminal
% defaults write com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks 2

このMacだとCoreの数が2なので2。

Xcodeでビルド

Cmd+opt+cleanでクリーンしてから、Cmd+Bでビルド。

手元の環境での結果

プロジェクトのファイル数

Storyboardとか他のバンドル関係とか、ライブラル類もあったりするけど(Podsは別ディレクトリ)、ざっくり1,000ファイルほどのプロジェクト。

スクリーンショット 2016-10-19 11.24.58.png
この環境で(2core)
スクリーンショット-2016-10-12-18.47.png
これ。

もうひとつ。

スクリーンショット 2016-10-19 11.26.23.png
この環境で(2core)
Screen-Shot-2016-10-18-at-17.59.png
これ。

(2016/12/5追記)
MacBook 2016Early
スクリーンショット 2016-12-05 17.30.21.png
1.1GHz Core2 m3
スクリーンショット 2016-12-05 17.29.50.png
MBA13inchよりも速いだと…?

iMac27inch 2011Mid Quad i7 3.4GHz
スクリーンショット-2016-12-05-15.1.png
この環境(4core)
スクリーンショット-2016-12-05-15.09.png
これ。

同じマシンをSSDに換装したら、さらに速くなりました。
スクリーンショット-2016-12-10-07.32.09.png

コア数とアクセス速度は正義。

参考にObjective-Cのビルド時間

2,000ファイルのプロジェクト(ObjCなのでファイルの数だけは多い)
スクリーンショット 2016-10-19 11.24.58.png
この環境で
スクリーンショット-2016-10-19-11.37.28.png
これ。

なにこの差

開発者への負担

このビルド速度の差は念頭に置いといたほうがいいです。
Swiftのビルドは遅い
プロジェクトは肥大化する(コントロールしたいけどこれは理想)
遅い遅いと言っても周りに伝わりにくい(定量的な数字が必要)
小手先の工夫で速くなるなんてのは気休めレベル(相対的なものでしかない)
開発者的にSwiftはいいけど、プロジェクトの進行に支障を来す場面が出てくる

もっとも効果的な解決方法

クックさん<MacPro買え。

まとめ

細かいことしないでビルドなんかさっさと終わって欲しい。
なんでもかんでもさくさくPlaygroundがいい。

追記

開発者の方はアドバイスいただけるの嬉しいのですが、お手元の環境+ビルド時間をそっと書いてもらえると助かります。

開発経験全然ないマネージャの方とかもいらっしゃいますので、そういう方に「ビルドってのは時間かかるんだ、具体的にこんな具合に」ということを俯瞰してもらいたいところです。

Swiftのコンパイルそのものがなかなかヘヴィなものなので、開発速度を上げる=速いMacが必要っていう認知もして欲しいですしね。そのためには相対的なものじゃなくて絶対数があるといいよね、っていう記事です。

(スクショ内にcore数出てなかったので追記)

参考資料(追記)

Xcode Hardware Performance
https://github.com/ashfurrow/xcode-hardware-performance#xcode-hardware-performance
コメントで教えていただいたここで、ざくっと速度の比較が一覧できます!
これは良い・・・・。

追記2

2016年12月5日に iMac 2011Mid と MacBook Early 2016 でのビルド結果を追加。

追記3

2016年12月10日に、上記iMacをSSDに換装したのでビルド結果を追加。

64
52
19

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
64
52

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?