在编译Java时使用多个核心/处理器

我使用具有八个内核的桌面来使用Ant(通过javac目标)构建Java应用程序。 有没有办法通过使用多个线程或进程来加速编译?

我知道我可以并行运行几个Ant任务,但我不认为这可以应用于单个编译目标,或者它可以吗?

我不知道有什么方法可以告诉ant本身有效使用多个内核。 但是你可以告诉ant使用Eclipse Compiler ,它支持内置的multithreading编译 。

只要您调用的javac不使用所有内核,您在Ant中所说的内容并不重要。 您可以使用compiler属性来定义应该为任务使用哪个java编译器。

如果您有多个构建目标,则可以使用fork=yes在外部执行目标。

http://ant.apache.org/manual/Tasks/javac.html#compilervalues

文档似乎表明它不太可能与javac一起正常工作。

任何试图并行运行大型Ant任务序列的人,例如javadoc和javac,都隐含地承担了识别和修复所有并发错误的任务。

因此,虽然此任务有用,但应将其视为应在某些批处理或测试情况下使用的高级任务,而不是加速多路CPU上构建时间的简单技巧。

不是我所知道的。 Eclipse编译器已经做了一些工作来加速使用多个内核,但它并没有像您希望的那样购买。

问题是,您是否可以使用渐进式编译进行开发,只重新编译那些已更改的内容? 然后可以将完全重建留给构建服务器。

您可以使用Buck Build来提高构建速度并利用多个内核。

简而言之:

Buck是Facebook开发和使用的构建系统。 它鼓励创建由代码和资源组成的小型可重用模块,并在许多平台上支持各种语言。

Buck可并行构建独立工件,以利用计算机上的多个内核。 此外,它通过跟踪未更改的模块来减少增量构建时间,从而重建最小的模块集。