Java compiler 并行编译思考

一、问题

最近基于JSR269做的代码插桩有一个编译问题需要定位,而且问题不是每次都能复现,需要多编译几次才行,出问题的项目是Maven构建的,相对较大,每次构建耗时就比较长。所以我就想,是否有什么配置项能加快编译的速度,比如:并行编译?最近在看Javac源码,也的确没有发现有任何多线程处理源码编译的痕迹。

二、过程

经过一番Google发现不只我有此疑问,在文章最后放上了检索的一些链接。有一个典型的声音:

Javac is a very fast compiler. If you have a project that’s so large as to bottleneck on compilation time, I’m impressed.

意思就是javac编译速度很快,很难有项目的源码能大到成为编译期的瓶颈。But...当前的问题是:项目编译时间比较长。

三、结果

经过一番搜索,确定了两件事:

  1. 确定了javac本身是不支持并行的,还翻到了一篇论文就是研究并行编译的
  2. Maven 3.x之后可以并行构建了,可以提高构建速度,模块依赖Maven会自动保证,不需要担心
    命令可以这么写:
mvn -T 1C clean install

详细参考,试了一下,执行速度提升了一倍多。
IDEA里也是可以配置的:
IDEA配置

四、参考链接

  1. What javac option(s) tell it to use all available cores for compiling?
  2. 一篇联合论文
  3. Maven: how to do parallel builds?
posted @ 2019-04-02 23:25  土豆条  阅读(283)  评论(0编辑  收藏