Infelizmente, mesmo partes diferentes da mesma compilação podem ser ideais com valores conflitantes do fator j, dependendo do que está sendo construído, como, quais recursos do sistema são o gargalo naquele momento, o que mais está acontecendo na máquina de compilação, o que está acontecendo no a rede (se estiver usando técnicas de construção distribuídas), status / local / desempenho dos muitos sistemas de armazenamento em cache envolvidos em uma construção, etc.
Compilar 100 arquivos C minúsculos pode ser mais rápido do que compilar um único arquivo enorme, ou vice-versa. Criar um código pequeno e altamente complicado pode ser mais lento do que criar enormes quantidades de código direto / linear.
Mesmo o contexto da compilação é importante - usar o fator aj otimizado para compilações em servidores dedicados ajustados para compilações exclusivas e sem sobreposição pode gerar resultados muito decepcionantes quando usado por desenvolvedores que constroem paralelamente no mesmo servidor compartilhado (cada compilação pode levar mais tempo que todos eles combinados se serializados) ou em servidores com diferentes configurações de hardware ou virtualizados.
Há também o aspecto de correção da especificação de compilação. Construções muito complexas podem ter condições de corrida, causando falhas intermitentes de construção com taxas de ocorrência que podem variar bastante com o aumento ou diminuição do fator j.
Posso continuar por muito tempo. O ponto é que você precisa realmente avaliar sua construção no seu próprio contexto para o qual deseja que o fator j seja otimizado. O comentário de @Jeff Schaller se aplica: repita até encontrar o seu melhor ajuste. Pessoalmente, eu começaria com o valor nproc, tentaria para cima primeiro e para baixo apenas se as tentativas para cima mostrarem degradação imediata.
Pode ser uma boa ideia primeiro avaliar várias construções idênticas em contextos supostamente idênticos, apenas para ter uma idéia da variabilidade de suas medições - se muito alta, isso poderia prejudicar todo o seu esforço de otimização (uma variabilidade de 20% eclipsaria completamente uma melhoria de 10% / leitura de degradação na busca do fator j).
Por fim, o IMHO é melhor usar um servidor de trabalho (adaptável), se suportado e disponível, em vez de um fator j fixo - ele fornece consistentemente um melhor desempenho de construção em intervalos mais amplos de contextos.
ccache
para mais tarde reconstruir, mas esta é OT