色んなMacでXcodeのビルド時間比較。開発用にどのMacを買うべきか？

# 直近の更新履歴

- 2019-12-23 古いモデルの情報を削除。所感コメントを更新。 <font color="Red">New!</font>
- 2019-11-15 MacBook Pro 16インチ (2019) を追記 </font>

# 概要

Swiftはコンパイルが遅いので、Macによって結構開発効率が変わってくる。
色んなMacのビルド時間を比較して、どのMacが開発に向いているか検討してみた。

# ビルド時間の表示方法

以下のコマンドを実行してXcodeを再起動すると、Xcode上部にビルド時間が表示されるようになる。

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

<img width="519" alt="スクリーンショット 2018-08-29 15.03.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/233769/bd9bf855-17c0-e98d-e79a-870dd78fd6d7.png">

# 色んなMacで比較

とあるSwiftアプリをクリーンビルドして、マシンごとのビルド時間とCPUのコア数、クロック数を比較。
ビルドにはXcode9.2を使用。

|モデル |CPU  |コア数  |クロック数|ビルド時間(s)  |
|-----------------|-----|------|-------|----------|
|iMac Pro (2017)  |Xeon W-2150B  | 10| 3.0GHz|62  |
|iMac (Late 2013)  |Core i5-4570  | 4| 3.2GHz|210 |
|Mac mini (Late 2012) |Core i7-3615QM  | 4| 2.3GHz|240 |
|MacBook Pro 13インチ(2017) |Core i5-7278U  | 2| 3.3GHz|294 |
|Mac mini (Late 2014) |Core i5-4308U  | 2| 2.8GHz|354 |
|MacBook air(Early 2015) |Core i5-5250U  | 2| 1.6GHz|513 |

結果を見るとモデルの新旧に関わらずシンプルにコア数×クロック数が高いほど速い。

# ビルド時間はクロック数×コア数にだいたい反比例してるっぽく見える

<img width="677" alt="スクリーンショット 2018-08-30 19.40.45.png" src="https://qiita-image-store.s3.amazonaws.com/0/233769/9b80c0fd-7c74-3075-ddfa-64109fa5496d.png">

サンプル数が少なく心もとないが、グラフにするとビルド時間はコア数×クロック数にだいたい反比例してるように見える。
だとすると、ビルド速度はコア数×クロック数にだいたい比例しているということになる。
（ちゃんと見ると2コアと4コアの間に傾きの飛びがあるように見えるが、だいたい反比例していることにしておく。。。）

また、速度がコア数に比例するということは、Xcodeはマルチコアを全て活用できているということになる。
CPUのTurbo Boost機能は一部のコアしか使えない場合に有効になるので、Turbo Boostの周波数はビルド速度に影響しないと予測できる。

# 並列設定を変えるとビルドは早くなるのか？

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

上記のコマンドで並列タスク数を設定するとビルドが早くなるという記事をネット上で散見したが、実際やってみても早くはならなかった。
並列設定をしていない状態が最速に近かったので、この設定は初期状態で最適化されているのではないかと思う。


iMac (Late 2013)4コアで試した結果。

|並列タスク数 |ビルド時間  |
|----------|---|
|未指定     |210  |
|1         |696  |
|2         |364  |
|3         |207  |
|4         |207  |
|6         |207  |
|8         |209  |

ただし、不適切な設定になっているとビルドが遅くなるので、現状を確認する意味で設定を変えてビルド時間を比較してみるのは良いかもしれない。

ちなみに並列タスク数の設定は、以下のコマンドでクリアできる。
`defaults delete com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks`

# 現行Macのビルド速度とコスパを比較する

ビルド速度がコア数×クロック数に比例すると仮定して、現行Mac各モデルのビルド速度と価格を比較する。

※ビルド速度＝コア数×クロック数
※ビルドコスパ＝ビルド速度÷価格×1千万
※メモリは一番下のオプション、ストレージはHDD以外で一番安いものを選択

### iMac系

|  **モデル** | **ストレージ** | **コア数** | **クロック数(GHz)** | **ビルド速度** | **価格** | **ビルドコスパ** |
|  ------ | :------ | :------ | ------ | ------ | ------ | ------ |
|  iMacPro (2017) | 1TB SSD | 18 | 2.3 | 41.4 | 822,800円 | 503 |
|   | 1TB SSD | 14 | 2.5 | 35 | 734,800円 | 476 |
|   | 1TB SSD | 10 | 3 | 30 | 646,800円 | 464 |
|   | 1TB SSD | 8 | 3.2 | 25.6 | 550,800円 | 465 |
|  27インチiMac (2019) | 512GB SSD | 8 | 3.6 | 28.8 | 308,800円 | 933 |
|   | 512GB SSD | 6 | 3.7 | 22.2 | 264,800円 | 838 |
|   | 256GB SSD | 6 | 3.0 | 18.0 | 209,800円 | 858 |
|  21.5インチiMac (2019) | 256GB SSD | 6 | 3.2 | 19.2 | 197,800円 | 971 |
|   | 256GB SSD | 6 | 3.0 | 18.0 | 175,800円 | 1024 |
|   | 256GB SSD | 4 | 3.6 | 14.4 | 164,800円 | 874 |

### Mac Book Pro

|  **モデル** | **ストレージ** | **コア数** | **クロック数(GHz)** | **ビルド速度** | **価格** | **ビルドコスパ** |
|  ------ | :------ | :------ | ------ | ------ | ------ | ------ |
|  16インチMacBook Pro (2019) <font color="Red">New!</font> | **512GB SSD** | 8 | 2.4 | 19.2 | 277,800円 | 691 |
|                          | **512GB SSD** | 6 | 2.6 | 15.6 | 248,800円 | 627 |
|  13インチMacBook Pro (2019) | 256GB SSD | 4 | 2.8 | 11.2 | 231,800円 | 483 |
|                           | 256GB SSD | 4 | 2.4 | 9.6 | 198,800円 | 483 |
|                           | 256GB SSD | 4 | 1.7 | 6.8 | 192,800円 | 353 |

### Mac Book Air

|  **モデル** | **ストレージ** | **コア数** | **クロック数(GHz)** | **ビルド速度** | **価格** | **ビルドコスパ** |
|  ------ | :------ | :------ | ------ | ------ | ------ | ------ |
| MacBook Air (2019) | 256GB SSD | 2 | 1.6 | 3.2 | 139,800円 | 229 |

### Mac Mini

|  **モデル** | **ストレージ** | **コア数** | **クロック数(GHz)** | **ビルド速度** | **価格** | **ビルドコスパ** |
|  ------ | :------ | :------ | ------ | ------ | ------ | ------ |
|  Mac mini (2018) | 256GB SSD | 6 | 3.2 | 19.2 | 144,800円 | 1326 |
|                  | 256GB SSD | 6 | 3.0 | 18.0 | 122,800円 | 1466 |
|                  | 128GB SSD | 4 | 3.6 | 14.4 | 89,800円 | 1604 |

### Mac Pro <font color="Red">New!

|  **モデル** | **ストレージ** | **コア数** | **クロック数(GHz)** | **ビルド速度** | **価格** | **ビルドコスパ** |
|  ------ | :------ | :------ | ------ | ------ | ------ | ------ |
|  Mac Pro (2019) | 256GB SSD | 28 | 2.5 | 70   | 1,369,800円 | 511 |
|                 | 256GB SSD | 24 | 2.7 | 64.8 | 1,259,800円 | 514 |
|                 | 256GB SSD | 16 | 3.2 | 51.2 | 819,800円   | 625 |
|                 | 256GB SSD | 12 | 3.3 | 39.6 | 709,800円   | 558 |
|                 | 256GB SSD |  8 | 3.5 | 28   | 599,800円   | 467 |

# 開発におすすめのMac


### Mac mini 2018
廉価でありながらCPU性能はそれなりに高く、コスパが一番高い。
5万円レベルの低価格構成はなくなったが、開発のコスパを考えるなら現在一番お勧めできる。
ただし、ディスプレイ、キーボード、マウスなどの付属品は何もついていないので、その分値段がかかることは考慮しておく必要がある。

### iMac 2019
新モデルが出てMac miniに次ぐコスパになった。（2019-04-01追記）
ディスプレイ付きで、サイズと価格も手頃なので、開発チームでまとめて購入するにはおすすめ。

### 16インチMacBook Pro 
かなり高いがビルドコスパは悪くない。
ビルド速度と持ち運びやすさを両立するとこのモデル。

# 開発におすすめできないMac

### Mac Book Air(2019)

開発用途では`今一番買ってはいけないMac`。
現行Mac唯一の2コアでビルドコスパが最悪。
あと少しお金をかければ4コアのMac Book Proが買えるのでそちらをお勧めする。

# おわりに

無理やりコスパを出したが、CPU以外の要素は全く無視しているのであくまで参考程度に。

実際コスパを考えるなら、持ち運びやすさやディスプレイなど他の要素も考慮に入れる必要があるし、そもそもそんなに長時間のビルドをしないのであれば低スペックのCPUでも問題はない。