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.8k
メインスレッドをブロックさせないためのSwift Concurrencyクイズ
tokizuoh
1
3.8k
運動モチベーション継続のためのiOSアプリ開発
tokizuoh
0
780
モノレポにおける path-filtering利用時でも GitHub ステータスのRequiredを 機能させたい!
tokizuoh
1
1.3k
累積和で配列の処理効率を改善しよう
tokizuoh
0
520
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
94
13k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
[RailsConf 2023] Rails as a piece of cake
palkan
52
4.9k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
What's new in Ruby 2.0
geeforr
343
31k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
860
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
370
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