16

私は最初の中規模のプロジェクトを Scala で作成しましたが、Eclipse 内でインクリメンタル コンパイルに時間がかかるのは、比較的少数の大きな.scalaファイルにクラスを配置する傾向があるためではないかと少し心配しています。

この背後にある私のロジックは次のとおりです。大きな.scalaファイル内の小さなクラスを変更して保存を押すと、コンパイラはファイル全体が何らかの形で変更されたことしか認識しない可能性があるため、ファイル内のすべてのものと依存関係を再コンパイルする必要があります。変更されたクラスとその依存クラスだけでなく、クラス。

そこで質問があります: 1 つのファイルに入れる Scala クラスの平均数は、何らかの形で再コンパイルの速度に影響しますか? または、このように言えば、再コンパイルの速度に関しては、.scala大きなファイルよりも小さなファイルが優先されますか、それとも実際には違いはありませんか?

4

1 に答える 1

14

その通りです。依存関係の追跡の単位はファイルです。1 つのクラスに変更を加えても、コンパイル ユニットに複数のクラスがある場合、同じファイル内の他のクラスに依存するすべてのファイルの再コンパイルがトリガーされます。

編集:

0.13.6 以降、sbt はデフォルトで新しい名前ハッシュ スキームを使用します。これにより、変更された名前に少なくともある程度の依存関係があるファイルのみを再コンパイルできます。

これは Sbt がコマンド ラインで動作する方法であり、Eclipse は Sbt でインクリメンタル コンパイラを使用します。

于 2012-08-27T12:35:02.730 に答える