When I (re-)build large systems on a desktop/laptop computer, I tell
make to use more than one thread to speed up the compilation speed, like this:
$ make -j$[ $K * $C ]
$C is supposed to indicate the number of cores (which we can assume to be a number with one digit) the machine has, while
$K is something I vary from
4, depending on my mood.
So, for example, I might say
make -j12 if I have 4 cores, indicating to
make to use up to 12 threads.
My rationale is, that if I only use
$C threads, cores will be idle while processes are busy fetching data from the drives. But if I do not limit the number of threads (i.e.
make -j) I run the risk to waste time switching contexts, run out of memory, or worse. Let's assume the machine has
$M gigs of memory (where
$M is in the order of 10).
So I was wondering if there is an established strategy to choose the most efficient number of threads to run.