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
の値になります.