2018/02/23
• 2 Swift
•
•
•
•
•
• defaults Xcode
• DerivedData
• +⇧+K
• +B
• DerivedData
• +⇧+K
• +B
-Xfrontend Swift compiler flags
[Build Settings] -> [OTHER_SWIFT_FLAGS]
-debug-time-function-bodies
• -Xfrontend -debug-time-function-bodies
•
-warn-long-function-bodies
• -Xfrontend -warn-long-function-bodies=100
• 100ms
• Swift3.0
•
• https://github.com/apple/swift/commit/
18c75928639acf0ccf0e1fb6729eea75bc09cbd5
-warn-long-expression-type-
checking
• -Xfrontend -warn-long-expression-type-
checking=50
• 50ms
• Xcode9 GM
• Swift2.2 & Xcode7.1.1
• -warn-long-function-bodies
-warn-long-expression-type-checking
Swift2.2+Xcode7.1.1
• xcodebuild
http://irace.me/swift-profiling
• Build Time Analyzer for Xcode
https://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcode
• xcprofiler
• xcodebuild
http://irace.me/swift-profiling
• Build Time Analyzer for Xcode
https://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcode
• xcprofiler
• gem install xcprofiler
• Build Settings -> Other Swift Flags
-Xfrontend -debug-time-function-bodies
•
• xcprofiler [PRODUCT_NAME or ACTIVITY_LOG_PATH]
[options]
xcprofiler
xcprofiler
1.
Closure Generics
2.
3.Closures and lazy properties
4.Ternary Conditional Operator
5.Nil-Coalescing Operator ??
1.
Closure Generics
2.
3.Closures and lazy properties
4.Ternary Conditional Operator
5.Nil-Coalescing Operator ??
Closure
Generics
Before
Before
https://github.com/fastred/Optimizing-Swift-
Build-Times
•
• 630
15
• Not Swifty
• Swift
•
•
•
• Swift2.2+Xcode7.1.1
Swift4+Xcode9
Swifty
Appendix
• https://developers.cyberagent.co.jp/blog/archives/7815/
• https://medium.com/@fkei/xcode
-2017-10-20 -bea6dc4f9fc0
• https://qiita.com/ruwatana/items/21b25781a2f44ccf29e2
• https://qiita.com/you_matz/items/
e95f30023eccc8d96357
• https://qiita.com/rizumita/items/913b05d799b3712260f6

Build Time Analyzer