相关疑难解决方法(0)

为什么IntelliJ IDEA编译Scala的速度如此之慢?

我正在使用9.0.3这是最新版本的想法.当我在Idea中编写一些scala源代码时,编译和运行需要几秒钟.这不应该那么慢,这是正常的吗?

scala intellij-idea

70
推荐指数
0
解决办法
2万
查看次数

什么是最好的Scala构建系统?

我在这里看到过关于IDE的问题 - 哪个是Scala开发的最佳IDE?什么是模具的斯卡拉现状如何?,但我在IDE方面有过各种各样的经历.现在,我正在使用带有自动工作区刷新选项的Eclipse IDE,以及KDE 4的Kate作为我的文本编辑器.以下是我想解决的一些问题:

  1. 使用我自己的编辑器 IDE真的适合每个人使用他们的组件.我更喜欢Kate,但刷新系统非常烦人(它不使用inotify,相反,可能是10s轮询间隔).我不使用内置文本编辑器的原因是因为破坏的自动完成功能导致IDE挂起大约10秒.
  2. 仅重建已修改的文件 Eclipse构建系统已损坏.它不知道何时重建类.我发现自己几乎有一半的时间去投射 - >清洁.更糟糕的是,即使它已经完成了我的项目构建,几分钟后它会弹出一些奇怪的错误(编辑 - 这些错误似乎是先前通过项目解决的问题>干净,但随后又回来了. ..).最后,将"首选项/继续启动,如果项目包含错误"设置为"提示"似乎对Scala项目没有影响(即,即使存在错误也始终启动).
  3. 构建自定义我可以使用"nightly"版本,但我想修改和使用我自己的Scala构建,而不是IDE插件中内置的编译器.将[eg]传递-Xprint:jvm给编译器(打印出降低的代码)也是很好的.
  4. 快速编译虽然Eclipse并不总是正确构建,但它看起来确实很快 - 甚至比它更好fsc.

我看着Ant和Maven,虽然还没有使用过(我还需要花时间解决#3和#4).在我花时间让一个次优的构建系统工作之前,我想看看是否有人有其他建议.提前致谢!

更新 - 我现在正在使用Maven,将项目作为编译器插件传递给它.看起来足够快; 我不确定Maven的缓存是什么样的jar.可以使用Scala 2.8.0的当前存储库[ link ].原型非常酷,跨平台支持似乎非常好.但是,关于编译问题,我不确定fsc是否实际修复,或者我的项目是否足够稳定(例如类名不会改变) - 手动运行并不会让我感到烦恼.如果您想查看示例,请随意浏览我正在使用的[ github ] 的pom.xml文件.

更新2 - 从我看过的基准测试中,Daniel Spiewak是正确的,构建器比Maven更快(并且,如果正在进行增量更改,Maven的10秒延迟会变得烦人),所以如果可以制作兼容的构建文件,那么它可能是值得...

eclipse scala build

50
推荐指数
2
解决办法
2万
查看次数

我可以对我的scala代码做什么,以便更快地编译?

我有一个大型的scala代码库.(https://opensource.ncsa.illinois.edu/confluence/display/DFDL/Daffodil%3A+Open+Source+DFDL)

它就像70K行的scala代码.我们在scala 2.11.7上

开发变得越来越困难,因为编译 - 编辑 - 编译 - 测试 - 调试周期对于小的更改来说太长了.

增量重新编译时间可能是一分钟,而且没有打开优化.有时更长.而且没有在文件中编辑很多更改.有时,一个非常小的变化会导致巨大的重新编译.

所以我的问题是:通过组织代码,我可以做些什么,这将改善编译时间?

例如,将代码分解为较小的文件?这会有帮助吗?

例如,更小的图书馆?

例如,避免使用implicits?(我们很少)

例如,避免使用特征?(我们有吨)

例如,避免大量进口?(我们有吨 - 包边界在这一点上非常混乱)

或者我真的无能为力吗?

我觉得这个很长的编译在某种程度上是由于依赖性导致了大量的重新编译,我正在考虑如何减少错误依赖......但这只是一个理论

我希望其他人可以对我们可能做的事情有所了解,这将提高增量变更的编译速度.

dependencies scala compilation

45
推荐指数
2
解决办法
3755
查看次数

为什么Scala程序的编译速度很慢?

我过去两个月一直在使用Scala.我也在使用Play Framework作为一个小应用程序.我观察到即使对于打印"Hello World"的程序,编译也很慢.为什么这么慢?有没有减少时间的提示?

scala playframework

11
推荐指数
2
解决办法
6053
查看次数

类型推断有多贵?

对于Scala类型的推理引擎,我肯定更为兴奋,但在现实环境中:

  1. 它的性能有多大?

  2. 何时推断类型,在编译时或运行时?

scala

7
推荐指数
1
解决办法
861
查看次数

scala编译器中的8位模拟器是什么以及如何启动它?

我正在读这个问题并看到:

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上

scala scalac

5
推荐指数
0
解决办法
312
查看次数