これは Swift Tweets の発表をまとめたものです。イベントのスポンサーとして Qiita に許可をいただいた上で、このような形(ツイートの引用)で投稿しています。
"型推論のビルドが遅いらしいから調べてみる" by @jpmartha_jp
— 🥞 jpmartha 🥞 (@jpmartha_jp) January 14, 2017
最近では iOS 界隈だけでなく Twitter や Instagram でもパンケーキさんと呼ばれていて、絵文字ができたことを喜んでいます。よろしくお願いします🙇 (1/10) #swtws pic.twitter.com/i69iZ4MipI
Swift のビルドが遅いことはたびたび話題になります。すでに Qiita などで書かれているとおり、Xcode で `-Xfrontend -debug-time-function-bodies` フラグを設定するとビルド時間がログに出力されます。 (2/10) #swtws pic.twitter.com/05OdqjbVSX
— 🥞 jpmartha 🥞 (@jpmartha_jp) January 14, 2017
そしてそれらを見やすくするツールがいくつかあります。たとえば最近では @giginet さんが Ruby で開発された xcprofiler というツールがあり、僕も少しコントリビュートしました⭐️https://t.co/ISZ0r42TEt (3/10) #swtws
— 🥞 jpmartha 🥞 (@jpmartha_jp) January 14, 2017
何が遅いのか?特に型推論が遅いと見聞きます。型推論 については Apple の The Swift Programming Language に "Type Inference" の項目があります。https://t.co/ttfZRdXOIw (4/10) #swtws
— 🥞 jpmartha 🥞 (@jpmartha_jp) January 14, 2017
型を明示すれば時間を短縮できるケースがあるようですが、それでは Swift の強力な型推論が生かせません。そこでコンパイラがどうなっているか見てみました。 (5/10) #swtws pic.twitter.com/nThcbB2al0
— 🥞 jpmartha 🥞 (@jpmartha_jp) January 14, 2017
まず https://t.co/mUbDOTNv38(エラー対策で略)を見てみました。
— 🥞 jpmartha 🥞 (@jpmartha_jp) January 14, 2017
> Semantic analysis includes type inference ...https://t.co/mnd2q7bClR (6/10) #swtws pic.twitter.com/GJ73QLNFQd
追記: エラー対策で略
=> まず Swift.org の Compiler and Standard Library を見てみました。
Semantic analysis にあるようなので GitHub の apple/swift(lib/Sema)をのぞいてみました。これらは C++ で書かれています。
— 🥞 jpmartha 🥞 (@jpmartha_jp) January 14, 2017
swift/lib/Sema/:https://t.co/FTqeOtqxWK (7/10) #swtws
ConstraintSystem.cpp に次のコメントがあります🤔
— 🥞 jpmartha 🥞 (@jpmartha_jp) January 14, 2017
> ConstraintSystem class, which provides type checking and type inference for expressions.
(8/10) #swtws pic.twitter.com/L3oRvRk8d6
…といったところで今回はもう枠におさまりませんが、Type Checker Design and Implementation とコンパイラが公開されているので一度のぞいてみてはいかがでしょうか🤗https://t.co/GXUkqhRKkl
— 🥞 jpmartha 🥞 (@jpmartha_jp) January 14, 2017
(9/10) #swtws
最後に、Qiita の記事のほか、まつもとゆきひろさんの著書「言語のしくみ」と mattn さんの書評が非常に参考になりました📖https://t.co/sVKDFID2P6
— 🥞 jpmartha 🥞 (@jpmartha_jp) January 14, 2017
以上、ごTwe...、ありがとうございました🙇 (10/10) #swtws