我正在使用9.0.3这是最新版本的想法.当我在Idea中编写一些scala源代码时,编译和运行需要几秒钟.这不应该那么慢,这是正常的吗?
我在这里看到过关于IDE的问题 - 哪个是Scala开发的最佳IDE?而什么是模具的斯卡拉现状如何?,但我在IDE方面有过各种各样的经历.现在,我正在使用带有自动工作区刷新选项的Eclipse IDE,以及KDE 4的Kate作为我的文本编辑器.以下是我想解决的一些问题:
-Xprint:jvm给编译器(打印出降低的代码)也是很好的.fsc.我看着Ant和Maven,虽然还没有使用过(我还需要花时间解决#3和#4).在我花时间让一个次优的构建系统工作之前,我想看看是否有人有其他建议.提前致谢!
更新 - 我现在正在使用Maven,将项目作为编译器插件传递给它.看起来足够快; 我不确定Maven的缓存是什么样的jar.可以使用Scala 2.8.0的当前存储库[ link ].原型非常酷,跨平台支持似乎非常好.但是,关于编译问题,我不确定fsc是否实际修复,或者我的项目是否足够稳定(例如类名不会改变) - 手动运行并不会让我感到烦恼.如果您想查看示例,请随意浏览我正在使用的[ github ] 的pom.xml文件.
更新2 - 从我看过的基准测试中,Daniel Spiewak是正确的,构建器比Maven更快(并且,如果正在进行增量更改,Maven的10秒延迟会变得烦人),所以如果可以制作兼容的构建文件,那么它可能是值得...
我有一个大型的scala代码库.(https://opensource.ncsa.illinois.edu/confluence/display/DFDL/Daffodil%3A+Open+Source+DFDL)
它就像70K行的scala代码.我们在scala 2.11.7上
开发变得越来越困难,因为编译 - 编辑 - 编译 - 测试 - 调试周期对于小的更改来说太长了.
增量重新编译时间可能是一分钟,而且没有打开优化.有时更长.而且没有在文件中编辑很多更改.有时,一个非常小的变化会导致巨大的重新编译.
所以我的问题是:通过组织代码,我可以做些什么,这将改善编译时间?
例如,将代码分解为较小的文件?这会有帮助吗?
例如,更小的图书馆?
例如,避免使用implicits?(我们很少)
例如,避免使用特征?(我们有吨)
例如,避免大量进口?(我们有吨 - 包边界在这一点上非常混乱)
或者我真的无能为力吗?
我觉得这个很长的编译在某种程度上是由于依赖性导致了大量的重新编译,我正在考虑如何减少错误依赖......但这只是一个理论
我希望其他人可以对我们可能做的事情有所了解,这将提高增量变更的编译速度.
我过去两个月一直在使用Scala.我也在使用Play Framework作为一个小应用程序.我观察到即使对于打印"Hello World"的程序,编译也很慢.为什么这么慢?有没有减少时间的提示?
我正在读这个问题并看到:
scalac包括一个全武装和可操作战斗站的8位模拟器,可在GenICode编译阶段使用魔法组合键CTRL-ALT-F12进行查看.
为了显示编译阶段scalac,我用过scalac -Xshow-phases.
phase name id description
---------- -- -----------
< ... >
icode 23 generate portable intermediate code
Run Code Online (Sandbox Code Playgroud)
似乎是相关阶段.
我编译了一个Hello-world程序
object Hello {
def main(args: Array[String]): Unit = {
println("Hello, world!")
}
}
Run Code Online (Sandbox Code Playgroud)
通过scalac Hello.scala并按下CTRL-ALT-F12一路.没啥事儿.尝试scalac -Xprint:icode Hello.scala使用CTRL-ALT-F12,没什么特别的.
如何触发模拟器?这有什么作用?
在scala 2.11.8和OS X 10.11.5上