最近個人的な事情でswiftを触ってまして。 さすがにいろんな言語携わっている自分だから仕様はすぐに把握できたのだけれど、なぜかやたらとビルドが遅い。 cpuが100%超えにすぐなるのだ。 MacBookがダメな子?とも思ったけど、どうやらビルドにものすごく時間がかかってしまう要因があるようなのです。 ってことでビルドが遅いと思ったら以下の点に注意しましょう。

型推論を減らす

swiftはvariable型、変数の型を推測してくれる機能があるのですが、これが意外と時間かかっているようです。 たとえば
let a = 2
let b = a * 3.14
なんて書くとaはintと思ったけどswiftはint * doubleなんてできないので、 これdoubleじゃん、ということになるためどうしても処理時間がかかる。 ってことでよほどのことが無い限りは型を指定しましょ。 もともとc言語出身の自分は型を書くのは全然違和感無いけど、web系言語から入った人はつらいかもね。

演算子を増やし過ぎない

これも型推論が原因っぽいのですが、演算子が一つの行に複数あると非常に遅くなる。
a = b[0] * c.x + b[1] * c.y + b[2] * c.z + b[3] * c.xx
こんな感じでしょうか。 こういうパターンは本気で数秒ビルドが遅くなるのですよ。 他の言語じゃ全然珍しくもない書き方なのに。 で、
let tmp1: Double = b[0] * c.x
let tmp2: Double = b[1] * c.y
let tmp3: Double = b[2] * c.z
let tmp4: Double = b[3] * c.xx
a = tmp1 + tmp2 + tmp3 + tmp4
こう分解すると明らかに早くなったり。 1行で書けるものを分解するのはストレスたまりますが、そうしないと余計にビルドが長くてイライラするのでしっかりと分離させましょう。

SourceControlを止める

昨今のIDEはみんなgitと連携した差分比較とか機能があるのでどのファイルに変分があったかすぐに分かるようになってます。 が、いちいちIDEがfetchして差分あるよ、なんてやってたら負荷がかかる。 自分でgit diffなりgit statusなり使ったほうが高速です。 ってことでこの機能はoffにしておいたほうがいいかと。

まとめ

まだまだswiftは言語として不完全なところもあるからトラブルも多いです。 C#が良い言語だなあというのを再認識させられますな。 やっぱりxamarinで開発したほうがいい気がしてきた。 まあそれでもswiftを使わざるを得ない人はしっかり癖と付き合ってあげましょう。 個人的にはswiftのせいなのか、IDEはXcodeよりVisual Studioのほうが使いやすいなあと思うのですがどうでしょ。