XcodeでSwiftのコンパイルにかかる時間を調査する方法を調べてみた

swiftを使ったiOSプロジェクトでコンパイルにかかる時間を調査する方法を調べたのでその報告。
2018.07.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

概要

XcodeでiOSアプリを開発していると、プロジェクト後半になるにつれて、徐々にビルド時間が伸びていて時々、チーム内でも議論されていました。まずは、どの部分で時間がかかっているかを調べてみようと思います。なので今回は、XcodeでiOSアプリを開発する時に、コンパイルにかかる時間を調べる方法をご紹介します。

環境

  • Xcode: Version 9.4(9F1027a)
  • macOS: 10.13.5

やり方

Xcodeの Other Swift Flags に以下のパラメータを追加します。すると、設定時間以上にコンパイルに時間がかかる箇所が、warningとして表示されるようになります

-Xfrontend -warn-long-expression-type-checking=100
-Xfrontend -warn-long-function-bodies=100

数字の部分はms単位ですので、適宜変更して下さい。入力した後の状態は以下のようになります。図ではわかりやすくするために、3msに設定しています   

パラメータについて

  • -warn-long-expression-type-checking=100は、型推論に100ms以上かかる箇所を警告で表示します。
  • -warn-long-function-bodies=100は、コンパイルに100ms以上かかるメソッドを警告で表示します。

結果

以下のように表示されるようになります。(設定は3msにしてあります。)

参考にした記事