Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Xcode 15 で swift run が遅い
Search
tokizo
November 08, 2023
0
3.5k
Xcode 15 で swift run が遅い
tokizo
November 08, 2023
Tweet
Share
More Decks by tokizo
See All by tokizo
iOS 曜日ランキングが出来上がるまで
tokizuoh
0
1.9k
メインスレッドをブロックさせないためのSwift Concurrencyクイズ
tokizuoh
1
4.2k
運動モチベーション継続のためのiOSアプリ開発
tokizuoh
0
830
モノレポにおける path-filtering利用時でも GitHub ステータスのRequiredを 機能させたい!
tokizuoh
1
1.4k
累積和で配列の処理効率を改善しよう
tokizuoh
0
560
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Become a Pro
speakerdeck
PRO
26
5.1k
Music & Morning Musume
bryan
46
6.3k
A better future with KSS
kneath
238
17k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
30
2.1k
Code Reviewing Like a Champion
maltzj
521
39k
Documentation Writing (for coders)
carmenintech
67
4.5k
Designing on Purpose - Digital PM Summit 2013
jponch
116
7.1k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.8k
Designing Experiences People Love
moore
139
23k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Writing Fast Ruby
sferik
628
61k
Transcript
Xcode 15 で swift run が遅い tokizo / @tokizuoh 2023/11/08
YUMEMI.grow Mobile #8 1
自己紹介 • tokizo (@tokizuoh) ◦ https://info.tokizuoh.dev/ • 株式会社はてな ◦ マンガアプリチーム
◦ モバイルアプリケーションエンジニア 2
話す内容 3 https://forums.swift.org/t/swift-run-really-slow/67807
話す内容 • Xcode 15 で swift run の実行に3秒以上 掛かっていて遅い ◦
“Hello, World!” を出力するだけで3秒 • 考えられる原因 4
5 swift run とは
swift run とは • SwiftPM で executable product, macroを ビルド・実行するコマンド
• executable product は所謂 CLIツール ◦ コマンドラインから実行できるネイティブバイナリを 作成する 6
7 著名な executable product
著名な executable product • uber/mockolo ◦ モック生成 ◦ https://github.com/uber/mockolo/blob/master/ Package.swift
• apollographql/apollo-ios-codegen ◦ GraphQL のスキーマから Swift ファイル生成 ◦ https://github.com/apollographql/apollo-ios-co degen/blob/main/Package.swift 8
本題 9
swift run 遅い 10
swift run 遅い 1. Xcode 15 で swift package init
--type executable を実行 2. swift run を実行すると3秒以上掛かる 11
swift run 遅い 12
毎回3秒 13
困る 14
原因を探す 15
原因を探す • swift run には -vv (very verbose) オプ ションがある
◦ コマンド実行時にデバッグ出力 ◦ 内部で実行するコマンドの表示 • 実行すると、/usr/bin/xcrun --sdk xros --show-sdk-platform-path に時間 が掛かっていることが分かる 16
/usr/bin/xcrun --sdk xros --show-sdk-platform-path 17
/usr/bin/xcrun --sdk xros --show-sdk-platform-path 18
“xros” 19
“xros” 20 https://github.com/apple/swift-package-manager/blob/828121137f394125d 03d5ab1e12df869b346bdcd/Sources/PackageModel/MinimumDeploymentTar get.swift#L89-L90
visionOS 21
visionOS 22 https://developer.apple.com/jp/visionos/
visionOS の SDK は Xcode 15 に存在しない 23
visionOS の SDK は Xcode 15 に存在しない 24
Xcode 15 beta には存在 する 25
Xcode 15 beta には存在する 26
Xcode 15 beta で swift run 27
Xcode 15 beta で swift run 28
Xcode 15 から Xcode 15 beta に変えたら 3秒台から0.4秒に 29
原因が分かって めでたい 30
おわり • Xcode 15 で使われている SwiftPM は swift run 時に
visionOS の SDK を探すが、 Xcode 15 に存在せず、処理に時間がかかる ◦ xcrun の内部挙動は不明だが、一定時間探索して 打ち切っているか、決められた範囲の探索が全て 行われていそう 31
おわり • Xcode 15 beta には visionOS の SDK が存在
するため、処理に時間はかからない • 根本解決するには? ◦ SwiftPM にコントリビュートする ▪ 原因を見つけたのは11/5(日)で tokizo は まだ手がつけられていない! 32