Java compiler 并行编译思考

1、问题

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

2、过程

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

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...当前的问题是:项目编译时间比较长。多线程

3、结果

通过一番搜索,肯定了两件事:maven

  1. 肯定了javac自己是不支持并行的,还翻到了一篇论文就是研究并行编译的
  2. Maven 3.x以后能够并行构建了,能够提升构建速度,模块依赖Maven会自动保证,不须要担忧
    命令能够这么写:
mvn -T 1C clean install

详细参考,试了一下,执行速度提高了一倍多。
IDEA里也是能够配置的:
IDEA配置ui

4、参考连接

  1. What javac option(s) tell it to use all available cores for compiling?
  2. 一篇联合论文
  3. Maven: how to do parallel builds?
相关文章
相关标签/搜索