Use the right build command to build only the things that changed:
# Regenerate cmake files and rebuild backend only: ./bin/make_impala.sh <arguments> # Rebuild impalad binary only: make -j ${IMPALA_BUILD_THREADS} impalad # Rebuild a backend test binary only: make -j ${IMPALA_BUILD_THREADS} buffered-block-mgr-test # Rebuild frontend only: make fe
Pass the right command line flags to skip unnecessary work:
- Add -notests to make_impala.sh or buildall.sh command to skip building backend tests
- Pass -noclean to buildall.sh if you don't need to do a full clean
Ccache - speeds up rebuilds when switching between branches
Ccache is a standard tool to accelerate C/C++ builds by caching previously-built object files. It can tremendously speed up builds when switching between branches of Impala.
# Install the ccache package (this example works on Ubuntu) sudo apt-get install ccache # Make sure you have a high limit on your max ccache size to ensure it is effective ccache --max-size=50G
Ninja - speeds up incremental builds
Ninja is an alternative to make that can resolve dependencies much faster. If there is nothing to build, ninja returns almost instantaneously where make can take 10+ seconds.
# Install the ninja package (this example works on Ubuntu) sudo apt-get install ninja-build # Instead of ./bin/make_impala.sh ...: ./bin/make_impala.sh ... -ninja # Instead of ./buildall.sh ...: ./buildall.sh ... -ninja # Instead of make -j ${IMPALA_BUILD_THREADS} <targets>: ninja -j ${IMPALA_BUILD_THREADS} <targets>
Using distcc
The instructions for using distcc are in bin/distcc/README.md