我在每个文件中都有一组相关的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不喜欢默认呈现这么大的文件的diff。
因此,我计划将每个case类划分为一个单独的文件,坚持“每个文件一个类”的规则。这样做的副作用是,现在可能有上千个文件,因为我有很多这样的案例类。
这里有一个问题:从“小文件数量(100个)”方法切换到“大文件数量(1000个)”方法会对编译性能产生负面影响吗?文件数量的增加会不会导致scala编译器花费相当长的时间来读取所有这些文件并进行编译?或者,由于“每个文件一个类”的方法减少了文件行数,可以帮助编译器更好地执行吗?这两种方法之间可能存在运行时性能差异吗?
发布于 2019-04-28 09:01:07
我认为你混淆了编译器的性能和IDE的性能。尝试关闭IDE并使用sbt/gradle/maven从命令行编译项目。我相信它会相当快。在scala中,隐式和类型推断的组合可能会破坏编译器的性能。不管你如何拆分,几千行普通的类声明应该不是问题。所以你应该选择最适合你的工具。或者重新思考应用程序设计。
运行时性能根本不会改变。
https://stackoverflow.com/questions/55875571
复制相似问题