2012-10-16 7 views
11

私のScala/SBTプロジェクトでは、コンパイルに最大5分(1分)かかるファイルが1つあります。他のすべては数秒でコンパイルできます。これは開発をかなり苦痛にさせる。ScalaとSBTの長いコンパイル時間をデバッグ

私はいくつかのScalaの構造を悪用していると確信していますが、私はそれをデバッグする方法を知りません。 Scalaで長いコンパイル時間をどのようにデバッグするのですか?

私はあなたが以下のScalaのコンパイラオプションを試すことができScalaの2.9.2とSBTに0.11.2

+2

ための長い時間は多くの理由を持つことができますコンパイルすることができます。コードを掲示することなく、私はあなたが多くの助けを得ることに疑いを持っています。最初のステップは、ファイルをいくつかのファイルに分割し、コンパイルするのに最も長くかかる部分を確認することです。これは_re_compilation時間にも役立ちます。 –

+1

多くのコードをリファクタリングせずにファイルを分割することはできません。私は、コンパイラでオンにできるフラグがいくつあるのかを知ることにもっと興味があり、問題がどこにあるのかというヒントを得ることができます。 – Eyal

+1

十分ですが、残りのコードに触れることなくクラスを特性に分割できます。 –

答えて

10

を使用しています:

  • -Ystatisticsプリントコンパイラ統計

をという段階を探します最も時間がかかります。 -printと関連して使用される場合、または「すべて」

  • -Yshow-treesは、詳細なツリーを表示した後

    • -Xprint:<phase>印刷アウトプログラム:相
    • -Ydebug出力デバッグメッセージ
    • -Ypmat-debugトレースすべてのパターンそして、それらを試してみてくださいマッチャーの活動。

    SBTコンソールから直接これらの設定を有効にするには、set scalacOptions in ThisBuild += "-Ystatistics"を使用するか、または複数、set scalacOptions in ThisBuild ++= Seq("-Yshow-trees", "-Ydebug)

  • 関連する問題