Tag / Linux

  • June 17, 2015 - Tilmann Scheller

    A Conclusion to Accelerating Your Build with Clang

    This is the second part of a series that explores improving the build process using Clang. This post will take a look at the remaining methods for speeding up the build and will conclude with an overall summary of the improved speeds. To read an introduction to this experiment as well as the build system we are using, take a look at part one of this series. Here is our list of ideas again: Generic: Build with Clang rather than GCC Use a faster linker, such as GNU gold Optimize our host compiler binary aggressively (LTO, PGO, LTO+PGO) Move parts of the debug info into separate files: split DWARF Use Ninja rather than GNU make in CMake-based projects Cache object files with ccache Use a shared library build instead of a static build for incremental debug builds Clang/LLVM-specific: Optimize TableGen for debug builds Build less: e.g. build only the backends we […]

    Read More
  • Building software is a time-consuming task, especially if you are working on large codebases such as Clang and LLVM (2.5M C++ lines combined). As an LLVM developer, a significant portion of my time is spent building the software because a clean build take several minutes to complete. The work outlined in this series started out as an experiment to see by how much we could speed up the build process by using different tools or build settings rather than simply upgrading our hardware, and the goal is to squeeze as much performance out of the toolchain as possible. The focus is on building Clang/LLVM, however most of the results and corresponding suggestions will apply to other large C++ projects as well, and this post expands on a lightning talk I recently gave at the EuroLLVM 2015 conference. Taking a Look at the Options So what can we actually do to speed up […]

    Read More