カルボナーラ街道

計測と観察

Xcode 15.1でswift runの実行時間が元に戻っていた

モチベーション

以前『Xcode 15 で swift run が遅い』というタイトルで登壇したが、今日Xcode 15.2がリリースされたので様子を見た。

speakerdeck.com

というのも、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-pathXcode 15.1以降では実行されていなかった。また、/usr/bin/xcrun --sdk {OS名} --show-sdk-platform-path の実行回数に違いがあった。

前提条件として自分のXcode 15系のbetaにはvisionOSのSDKはいれていないので、それの影響でXcode15.0.1でvisionOSのSDKを探しに行ってしまっていることは無さそうで根本原因は分かっていない。

リリースノートざっと見たけど言及されていなかった。

ともあれ、実行時間がグッと短縮されて元の水準に戻ったので、swift packageのexecutable packageの開発が捗りそう。