Recently I came across two excellent post about accelerating clang/llvm build with different compiler/optimization [1] [2].
I tried some of author advices getting very good results. Basically I moved to optimized clang build, changed to gold linker and used another memory allocator than system glibc one. Results in build time for all the clang/llvm toolchain is summarized below (my machine is a i7-4510U, 2C/4T, 8GB, 256GB SSD):
GCC 4.8.4 + gold (Ubuntu 14.04)
real 85m17.640s user 257m1.976s sys 11m35.284s
LLVM 3.6 + gold (Ubuntu 14.04)
real 34m4.909s user 128m43.382s sys 3m51.643s
LLVM 3.7 + gold + tcmalloc
real 32m56.707s user 121m40.562s sys 3m52.358s
Gold linker also shows a *much* less RSS usage, I am able to fully use make -j4 while linking in 8GB without issue any swapping.
Two things I would add/check for the posts:
1. Change from libc to tcmalloc showed me a 3-4% improvement. I tried jemalloc, but tcmalloc is faster. I am using currently system version 2.2, but I have pushed an aggressive decommit patch to enable as default for 2.4 that might show lower RSS and latency (I will check it later).
2. First I try to accelerate my build by offloading compilation using distcc. Results were good, although the other machine utilization (i7, 4C/8T, 8GB) showed mixes cpu utilization. The problem was linking memory utilization using ld.bfd, which generates a lot of swapping with higher job count. I will try using distcc with clang.
[1] http://blogs.s-osg.org/an-introduction-to-accelerating-your-build-with-clang... [2] http://blogs.s-osg.org/a-conclusion-to-accelerating-your-build-with-clang/