2012-05-19 20 views
5

Scalaでのコンパイルはかなり遅いです。それをもっと速くすることを望んでいますか?Scala用のコンパイラキャッシュ?

私の頭に浮かぶのは、Scalaのccacheに相当するものです。コンパイラがいくつかの部分を再コンパイルする必要のないキャッシュです。私はその型推論が事態をより複雑にすることは知っていますが、それが実現可能かどうかは疑問です。多分、キャッシングは異なるレベル(例えばAST)で行われるべきであり、何らかの前処理を行う必要があるかもしれない。

この種のツールが存在する場合、どれくらいの金額が保存される可能性があるかを見積もります。それを構築するにはどのような課題を解決する必要がありますか?

+2

キャッシュする内容を指定していません。あなたはccacheについて言及していますが、Scalaに比べて大幅に異なるコンパイルスキームを持つC++をターゲットにしています。 あなたが探しているのはインクリメンタルなコンパイルだと思います。 Sbtはこの機能を実装していますが、それでもまだバグがあります(あまりにも多く再コンパイルできます)。 正確に何がキャッシュされるべきかを指定するような質問がより明確であれば、より正確に答えることができるかもしれません。 –

+0

元のccacheは、あらかじめ処理された.c .cppファイルをオブジェクトバイナリにキャッシュします。プログラマーの観点から見ると、ビルドのスピードアップが重要なことではありません。いくつかの可能性: - ファイル自体(型推論のために不可能) - AST - 何らかの種類の前処理済みファイル – Jakozaur

+0

sbtは本当に必要なものを再コンパイルすることによって.classファイルをキャッシュします。私はそれがまさにあなたが探しているものだと思います。 –

答えて

0

また、必要なものだけを再コンパイルするSBTと同様に、JRebelはこの問題の解決に役立ち、Scalaのサポートを受けています。

+0

SBTは必要のないたくさんのものを再コンパイルし、*が必要なものを再コンパイルすることができません。 – aij

関連する問題