I want to compile as fast as possible. Go figure. And would like to automate the choice of the number following the -j
option. How can I programmatically choose that value, e.g. in a shell script?
Is the output of nproc
equivalent to the number of threads I have available to compile with?
make -j1
make -j16
Best Answer
nproc
gives the number of CPU cores/threads available, e.g. 8 on a quad-core CPU supporting two-way SMT.The number of jobs you can run in parallel with
make
using the-j
option depends on a number of factors:make
jobmake
jobs are I/O- or CPU-boundmake -j$(nproc)
is a decent place to start, but you can usually use higher values, as long as you don't exhaust your available memory and start thrashing.For really fast builds, if you have enough memory, I recommend using a
tmpfs
, that way most jobs will be CPU-bound andmake -j$(nproc)
will work as fast as possible.