モチベーション
以前『Xcode 15 で swift run が遅い』というタイトルで登壇したが、今日Xcode 15.2がリリースされたので様子を見た。
というのも、Xcode 15ではswift runの内部で(おそらくbetaの名残で)visionOSのSDKを探す処理が入っており、存在しないものを探していたため実行時間が長かったが、Xcode 15.2でvisionOSのSDKがnot betaな本流のXcodeでもインストールできるようになったため、改善されたのではないかと予想していた。
swift runの実行時間がXcode 15.1から元の水準に戻っていた
直近3バージョンを比較したら、15.1から実行時間が元の水準に戻っていたことが分かった。
Xcode 15.0.1: 3.4秒
$xcodebuild -version Xcode 15.0.1 Build version 15A507 $time (swift run --vv) # 省略 ( swift run --vv; ) 0.04s user 0.04s system 2% cpu 3.440 total
Xcode 15.1: 0.68秒
$xcodebuild -version Xcode 15.1 Build version 15C65 $time (swift run --vv) # 省略 ( swift run --vv; ) 0.04s user 0.04s system 12% cpu 0.679 total
Xcode 15.2: 0.46秒
$xcodebuild -version Xcode 15.2 Build version 15C500b $time (swift run --vv) # 省略 ( swift run --vv; ) 0.04s user 0.03s system 15% cpu 0.456 total
swift run --vv
のログを見てみると、遅かった原因の /usr/bin/xcrun --sdk xros --show-sdk-platform-path
がXcode 15.1以降では実行されていなかった。また、/usr/bin/xcrun --sdk {OS名} --show-sdk-platform-path
の実行回数に違いがあった。
- Xcode 15.0.1: macosx, iphoneos, appletvos, watchos, xros に対してそれぞれ実行
- Xcode 15.1: macosx のみ実行
- Xcode 15.2: macosx のみ実行
前提条件として自分のXcode 15系のbetaにはvisionOSのSDKはいれていないので、それの影響でXcode15.0.1でvisionOSのSDKを探しに行ってしまっていることは無さそうで根本原因は分かっていない。
リリースノートざっと見たけど言及されていなかった。
- https://developer.apple.com/documentation/xcode-release-notes/xcode-15_2-release-notes
- https://developer.apple.com/documentation/xcode-release-notes/xcode-15_1-release-notes
ともあれ、実行時間がグッと短縮されて元の水準に戻ったので、swift packageのexecutable packageの開発が捗りそう。