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/
_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to