swift3+OSX開発格闘記第6回「ビルドおもーい」

Author:

swiftのビルド速度はイマイチ。
はっきり言って重いです。
すぐにSourcekitServiceとかいうものが200%とかなってしまいます。

というか、書き方によって非常に差が出る。
一行変な書き方するだけで10秒ビルド時間に差が出たりする。
特に暗黙的変換に非常に弱いのですよね。

で、書き方間違えて修正してもビルドエラーが消えるのに非常に時間がかかる。
下手するとリビルドしたほうが早かったり。

たとえば。

var aaa = [[1, 2, 3], [4, 5, 6]]

これは時間かかりそうね。暗黙的+2次元配列はかなりやばい。
swiftでこういう書き方はしてはいけません。エラーにはならないものの。

var aaa: [[Int]] =  [[1, 2, 3], [4, 5, 6]]

こうすること。これだけでもずいぶん早くなります。

他には。

return ["aaa", "bbb"]

ああ、これも時間かかる例。

let xxx: [String] = ["aaa", "bbb"]
return xxx

とするとかしましょ。

var d: String = 
    (String)(year) + "/" +
    (String)(month) + "/" +
    (String)(day) + " " +
    (String)(hour) + ":" +
    (String)(minute) + ":" +
    (String)(second)

こんなのそもそもビルド通りません。
Expression was too Complexとか言われます。

var d: String = (String)(year)
d = d + "/"
d = d + (String)(month) + "/"
d = (String)(day) + " "
d = (String)(hour) + ":"
d = (String)(minute) + ":"
d = (String)(second)

ああ、しんどい。

var d: String = String(format: "%d/%d/%d %d:%d:%d", year, month, day, hour, minute, second)

ま、こうですかね。

    x[i] = a[0] * b[i][0]
+ a[1] * b[i][1]
+ a[2] * b[i][2];

こんなのも駄目。
    x[i] = a[0] * b[i][0]
x[i] += a[1] * b[i][1]
x[i] += a[2] * b[i][2];

こうします。

ファイルごとのビルド時間を見れるので、それを見ながら時間がかかっているものを消していくといいですね。

後はMacのスペック。
Mac Proにしたら劇的に早くなったとかいう記事を見たことあるし。
自分はProだけどそれでもストレスかかるから、Airだときついだろうなあ。

これに関してはなんともフォローできないですね。
むしろswiftのせいではなくXCodeに問題があると言えなくもないから。

第1回「ぐぐって出てくるのはどれもこれもiOS」
第2回「配列を渡すとインスタンスがコピーされた」
第3回「初期化しないメンバ変数なんて許しません」
第4回「NSStringとString、NSURLとUrl」
第5回「for文が、++が、、、」
第6回「ビルドおもーい」
第7回「do、try、catch」
第8回「swift2では動くのにswift3では動かない」
第9回「ふおおWindowsFormみたい」
第10回「Labelの値を変える」
第11回「windowControllerとViewControllerとView」
第12回「ボタンはViewController、メニューはDelegate」
第13回「TreeViewのしんどさ」
第14回「¥nマークは改行しません」
第15回「instantiateじゃ駄目ぇ」
第16回「ScrollViewの中にTextView」
第17回「ファイルをどう読み書きすればいいんじゃ」
第18回「右クリック・・・」
第19回「isIntなんて無いです」
第20回「anyはswitchでキャスト」
第21回「MessageBox.Show」
第22回「BezierはViewの中で」
第23回「512pxのアイコンを用意せよ」
第24回「アーカイブ作成」
第25回「これから始める人へ」

Share on Facebook
Pocket