• 作成:

Stackの並列ビルド数は--jobsを指定しないデフォルトの場合CPUのコア数と等しくなります

Stackは--jobsオプションを指定することで, 依存関係が独立したパッケージを並列にビルドすることが可能です.

これはデフォルトで有効になっている機能です. CPUコア数とメモリのバランスが取れてない場合並列ビルドにメモリが耐えきれずにビルドが落ちてしまうので--jobs 1を指定する必要がありました. なので, デフォルトで有効だとはわかっていました.

これのデフォルト並列数が気になったので調べてみました.

stack/Config.hs at dd01d0a9e20b440d6f4ebc0f49a585a3b33d34b2 · commercialhaskell/stack にたどり着きました.

書いてあるとおり, 指定されないNothingの場合はGHC.Conc.getNumProcessorsの値が使用されます.

ちなみに, この関数の結果は私が所有しているラップトップのIntel(R) Core(TM) i7-7500U CPU @ 2.70GHzだと4, デスクトップのAMD Ryzen Threadripper 1950X 16-Core Processorだと32の値になります.