在多CPU计算机上编译Scala代码有什么好处吗?
(关于scala 编译,而不是用于多核处理的scala代码)
答案 0 :(得分:2)
您可能要检查一些实验性的编译器标志。 Scala 2.12.5引入了-Ybackend-parallelism N,它使您可以并行发出字节码-PR声称使用8个后端线程可以提高4-5%。
https://kubuszok.com/2018/speed-up-things-in-scalac-and-sbt/
答案 1 :(得分:2)
Triplequote Hydra是一种商用多核Scala编译器,支持并行编译Scala代码。使用四核计算机的速度提高了大约2倍(速度提高了50%),并且可以在具有更多内核的硬件上很好地扩展。
请注意,Scala -Ybackend-parallelism <n>
标志仅启用并行化编译器管道的最后一个阶段,即字节码发射。与其他编译器阶段(例如,类型检查)相比,字节码的发射通常只花费很少的时间,因此根据代码的不同,增益很小或可以忽略不计。
(完全公开,我是Triplequote的创始人。)
答案 2 :(得分:0)
当我构建一个大型Scala项目时,我的CPU在所有虚拟内核(带超线程的四核)上都达到了极限。像Hydra这样的游戏并没有什么特别的,只有一堆要构建的模块似乎并行运行。不要忘记GC也需要自己的CPU时间。
一种实验的好方法是启动具有大量内核的云实例,克隆并构建您的项目,然后安排时间。下次需要升级我的PC时,我一定会这样做,看看有多少个内核值得拥有。