这只是部分答案,因为它在很大程度上取决于您在做什么以及您的代码是什么样的 - 但我倾向于不使用 IDE 进行编译/测试。相反,我在 sbt 中运行它(有时使用其他命令,取决于我在做什么)
> ~test-quick
其中(引用文档):
- 上一次运行失败的测试
- 之前未运行的测试
- 重新编译具有一个或多个传递依赖项的测试,可能在不同的项目中。
波浪号使它在每次代码更改时运行
无论如何,对我来说,它非常快,重要的是只运行可能会改变的东西
我听说的另一件事(但不能保证会加快速度)是尽可能多地显式输入。类型推断器意味着非常慢(当您考虑它必须做什么时,这是有道理的)
根据 Saby 的要求进行编辑
在我讨论你提出的观点之前,我只想指出这些并不是真正的恐怖,而且 eclipse/intellij 实际上并不讨厌他们所做的事情。事实上,当你想到它时,它们的工作令人印象深刻。
Scala 是一种比 java 复杂得多的语言,这意味着编译器必须比 java 做更多的事情。我在这里谈论的是诸如宏、隐式和类型推断之类的特性。这些功能不是免费的,编译时间和内存会在这里受到影响。(基本上是因为编译器必须使用各种疯狂的东西来进行类型推断;多次运行代码以获取宏;等等等等)
显然,与任何其他语言一样,您的编译时间由很多因素决定:您使用了哪些功能、您使用了哪些模式、您必须使用哪些依赖项等等。
无论如何,一点一点:
老实说,我不知道如何回答这个问题。我目前正在开发一个小型 java 项目(想想十几个依赖项、几千行代码、一些 spring 但没有太多其他事情发生),而且我肯定不会在 Intellij 中获得毫秒级的编译时间。如果这确实引起了问题,那么我唯一的建议是使用命令行。
我对eclipse一无所知,但是如果您使用的是Intellij 13 ,则可以像这样设置增量编译器。sbt 插件在 Intellij 14 中发生了相当大的变化,所以我认为这不再是一个选项(即它做任何事情)
我认为我上面的回答涵盖了这一点。关键是您不必使用 sbt 包,而我通常不需要。而是键入 sbt 并在加载时键入 ~test-quick 并且仅在需要时运行 sbt package
这可能就是 intellij 的工作原理。像 3,我认为你不能再改变这个了
我不知道这些是什么,但你可能应该用谷歌搜索错误,如果你找不到任何东西,用一些例子创建一个新的 Stack Overflow 问题。
其他需要考虑的事项
设置可能很重要。大多数铁杆 Scala 开发人员都知道 sublime text 或 emacs 中的代码,他们在命令行上使用名为ensime和 sbt 的插件来测试/编译它(以及一个或两个 repl)。否则(无论如何在写这篇文章的时候),大多数其他人(包括我)使用 Intellij 编写他们的代码,然后在命令行上使用 sbt 或 Intellij 本身来测试/编译。你需要玩,找到最适合你的。
您要考虑的另一件事是您正在使用的 sbt 版本。我没有这方面的基准,但我记得旧版本的速度较慢,而且仅仅因为你运行的是旧版本的东西而改变你的工作方式会很痛苦。
还要确保你安装了 java 8 sdk - 我知道 Typesafe 的女孩和男孩正在花费越来越多的时间来优化 java 8 的 sbt。