大量源代码文件对编译性能的影响

时间:2019-04-26 22:23:13

标签: scala

我在每个文件中都有一组相关的scala case类,如下所示: 例如。

case class Book(pages: Seq[Page]);
case class Page(paras: Seq[Para]);
case class Para(lines: Seq[Line]);
case class Line(words: Seq[String]);
...

我大约有100个这样的文件,每个文件包含一组相关的案例类。我看到的问题是,某些文件变得非常大,达到500-1000行代码的程度。我的IDE需要很长时间才能编译如此大的文件,并且在编辑此类文件时有时会挂起。当我提出PR时,Github不愿意默认渲染这么大文件的差异。

因此,我打算将每个案例类分成一个单独的文件,并遵循“每个文件一类”的规则。这样做的副作用是,由于我有很多此类案例类,因此现在可能有1000个文件。

这是问题: 从“少量(几百个大文件)”方法切换到“大量(几千个小文件)”方法是否会对编译性能产生负面影响?文件数量的增加会导致scala编译器花费相当长的时间来读取所有这些文件并进行编译吗?或由于“每个文件1类”方法而导致的文件行数减少,是否可以帮助编译器更好地执行? 这两种方法之间在运行时性能上会有区别吗?

1 个答案:

答案 0 :(得分:1)

我认为您在混淆编译器性能和IDE性能。尝试关闭IDE并使用sbt / gradle / maven从命令行编译项目。我相信它将很快。 在scala中,隐式和类型推断的组合可能会破坏编译器的性能。无论如何拆分,几千行普通类声明都不应该成为问题。因此,您应该选择最适合您的工具。或者也许重新考虑应用程序设计。

运行时性能完全不会改变。

相关问题