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.7k
Xcode 15 で swift run が遅い
tokizo
November 08, 2023
Tweet
Share
More Decks by tokizo
See All by tokizo
徐々に増えているSwiftUI Anchor関連API
tokizuoh
1
210
iOS 曜日ランキングが出来上がるまで
tokizuoh
0
2.4k
メインスレッドをブロックさせないためのSwift Concurrencyクイズ
tokizuoh
1
5.3k
運動モチベーション継続のためのiOSアプリ開発
tokizuoh
0
970
モノレポにおける path-filtering利用時でも GitHub ステータスのRequiredを 機能させたい!
tokizuoh
1
1.5k
累積和で配列の処理効率を改善しよう
tokizuoh
0
660
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.5k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.7k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
Writing Fast Ruby
sferik
629
62k
Designing for Performance
lara
610
69k
Code Reviewing Like a Champion
maltzj
526
40k
A Tale of Four Properties
chriscoyier
161
23k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
RailsConf 2023
tenderlove
30
1.3k
Being A Developer After 40
akosma
91
590k
Agile that works and the tools we love
rasmusluckow
331
21k
Rails Girls Zürich Keynote
gr2m
95
14k
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