1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Xcode16.4からSwiftSyntaxのビルド時間が爆速にできる様になった

Posted at

SwiftSyntaxに依存したSwiftのモジュールをビルドしようとすると、ビルド時間がやたらかかります。
なぜかというと、SwiftSyntaxのソースコードの量が巨大で、コンパイル時間に時間がかかっているからです。
SwiftSyntaxに依存したプロジェクトのビルドタイムラインを見てみると、ざっと40秒ほどSwiftSyntaxのコンパイル時時間がかかっています。

image.png

image.png

OSSや自作のSwift macrosを使っている場合は、SwiftSyntaxに依存しているのでビルド時間のボトルネックになってしまっているケースが多いと思います。

そんなSwiftSyntaxですが、Xcode16.4からはプリビルドされたSwiftSyntaxが利用できる様になったことで、ビルド速度が爆速にできる様になりました。

現状、SwiftSyntaxの以下バージョンでプリビルド版が使える様です。

  • 600.0.1
  • 601.0.1

さっそく試してみた

以下コマンドをコンソールで実行して UserDefaultsの設定を行うことで、SwiftSyntaxのプリビルドされたものが利用できる様になる様です。

defaults write com.apple.dt.Xcode IDEPackageEnablePrebuilts YES

ちゃんと設定できているか確認したい場合は以下コマンドで確認できます。

defaults read com.apple.dt.Xcode IDEPackageEnablePrebuilts

上記設定が終わった後、Reset Package Cacheなどでパッケージ管理のリロードを行ったら準備完了です。(私は、最初UserDefaultsの設定ができればOKだと思っていたら、全然ビルド時間変わらずハマってしまいました。)

ビルドの結果は以下の通りで、51s 264ms → 5s 417msと劇的にビルド速度が向上しました。

image.png

感想

ビルド速度の改善のメリットはめちゃくちゃ大きいと思いましたが、現状はまだ既知のエラーもあるようなので、何も考えず取り入れても良いような代物ではないなと思いました。
その一つとして、テスト用のビルドが通らなくなるというものです。

自分の環境では再現しなかったので、100%再現するわけではなさそうですが、業務に取り入れる時には、この問題が再現しないかは確認したほうが良さそうです。

1
1
0

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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?