Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 大量源代码文件对编译性能的影响_Scala - Fatal编程技术网

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

Scala 大量源代码文件对编译性能的影响,scala,Scala,我在每个文件中都有一组相关的scala案例类,如下所示: 例如 我有大约100个这样的文件,每个文件包含一组相关的案例类。我看到的问题是,有些文件会增长到500-1000行代码。我的IDE需要很长时间来编译如此大的文件,并且在编辑这些文件时有时会挂起。当我提交PR时,Github不愿意在默认情况下呈现如此大的文件差异 因此,我计划将每个案例类拆分为一个单独的文件,遵守“每个文件1类”的规则。这样做的副作用是,现在可能会有1000个文件,因为我有很多这样的案例类 问题是: 从“少量(100个)大文

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

我有大约100个这样的文件,每个文件包含一组相关的案例类。我看到的问题是,有些文件会增长到500-1000行代码。我的IDE需要很长时间来编译如此大的文件,并且在编辑这些文件时有时会挂起。当我提交PR时,Github不愿意在默认情况下呈现如此大的文件差异

因此,我计划将每个案例类拆分为一个单独的文件,遵守“每个文件1类”的规则。这样做的副作用是,现在可能会有1000个文件,因为我有很多这样的案例类

问题是: 从“少量(100个)大文件”方法切换到“大量(1000个)小文件”方法是否会对编译性能产生负面影响?文件数量的增加是否会导致scala编译器花费相当长的时间来读取和编译所有这些文件?或者,由于“每个文件一个类”的方法,文件行数的减少是否有助于编译器更好地执行?
这两种方法之间是否存在运行时性能差异?

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


运行时性能不会发生任何变化。

您尝试过吗?不确定干净的编译是否需要更长的时间,但使用增量编译,编译器将检查自上次以来哪些编译单元(文件)发生了更改,并编译这些编译单元,以及依赖于更改的文件的所有文件。因此,从这个角度来看,每个文件有一个类更好
case class Book(pages: Seq[Page]);
case class Page(paras: Seq[Para]);
case class Para(lines: Seq[Line]);
case class Line(words: Seq[String]);
...