ジョブの並列実行でQtCreatorでのビルド時間を短縮する
QtCreatorでビルドする際に、makeに-jオプションをつけたら
並列的にビルドを行ってくれるんだそうで、ビルド時間を短縮出来るとのこと。
「-j」のjの直後に数値をつけると並列数の指定になり、つけない場合はメモリの許す限り全力出すっぽい?
ただ、あまりスレッドを増やしすぎるとスラッシングが起きてかえって効率が悪くなるみたい。
数値を指定する場合はcpu数x2がいいとのこと。 シングルコアの場合は-j2、デュアルコアの場合は-j4、など。
画像のようにビルドステップのmake引数に付加する。
以下に、実際にどれくらい効果があったのかのメモとして、デフォルト作成したプロジェクトと
Qt付属のサンプルソースのプロジェクトをリビルドした際の経過時間(ビルド+リンク時間)を残しておく。
環境はQt5.3.2で統一、Releaseビルド固定、[ビルド]→[すべてリビルド]でなるべく条件は一緒・・・のつもり。
1:テンプレートのプロジェクト(Linuxデスクトップ向け)
機種/CPU/OS | 「-j」なし | 「-j2」 | 「-j4」 | 「-j8」 | 「-j」 | PassMark |
---|---|---|---|---|---|---|
EeePC901 (Atom N270/1.6GHz) +Zorin OS Lite9(Linux) |
00:12〜 00:13 |
00:11 | 00:11 | - | 00:10 | 281 |
SONY VAIO VGN-P91S (Atom Z550/2.0GHz) +linuxBean14.04(Linux) |
00:10〜 00:11 |
00:08〜 00:09 |
00:08〜 00:09 |
- | 00:08〜 00:09 |
381 |
Dell Vostro1200 (Core2Duo T7250/2.00GHz × 2) +linuxBean14.04(Linux) |
00:04 | - | 00:02 | 00:02〜 00:03 |
00:02〜 00:03 |
1105 |
NECデスクトップ (Celeron E3300/2.50GHz × 2) +linuxBean14.04(Linux) |
00:04 | 00:03 | 00:02 | - | 00:02 | 1361 |
Dell Vostroノート (Core2Duo P8600/2.40GHz × 2) +linuxBean14.04(Linux) |
00:03 | 00:02 | 00:02 | - | 00:02 | 1548 |
EPSON Endeavor ST120 (Core2Duo T9800/2.93GHz × 2) +linuxBean14.04(Linux) |
- | - | - | - | - | 2034 |
ASUS K55DR (A8-4500M/1.9GHz × 4) +linuxBean14.04(Linux) |
00:04 | 00:03 | 00:02 | 00:02 | 00:02 | 2674 |
Dell Vostro3300 ノート (Core i5 480M/2.66GHz × 2) +linuxBean14.04(Linux) |
00:03 | 00:02 | 00:02 | 00:02 | 00:02 | 2456 |
HPデスクトップ (i5-3470/3.20GHz × 4) +Windows7+MinGW32bit版 |
00:03 | 00:02 | 00:02 | 00:02 | 00:02 | 6568 |
2:QtCreator付属のサンプルソース「sub-attaq」ソースファイル13個 (Linuxデスクトップ向け)
機種/CPU/OS | 「-j」なし | 「-j2」 | 「-j4」 | 「-j8」 | 「-j」 | PassMark | |
---|---|---|---|---|---|---|---|
EeePC901 (Atom N270/1.6GHz) +Zorin OS Lite9(Linux) |
01:43〜 01:44 |
01:19〜 01:20 |
- | - | 01:20〜 01:21 |
281 | |
SONY VAIO VGN-P91S (Atom Z550/2.0GHz) +linuxBean14.04(Linux) |
01:31 | 01:10〜 01:11 |
- | - | 01:10〜 01:11 |
381 | |
Dell Vostro1200 (Core2Duo T7250/2.00GHz × 2) +linuxBean14.04(Linux) |
00:33 | - | 00:18〜 00:19 |
00:19 | 00:19 | 1105 | |
NECデスクトップ (Celeron E3300/2.50GHz × 2) +linuxBean14.04(Linux) |
00:30 | 00:18 | 00:19 | - | 00:18〜 00:19 |
1361 | |
Dell Vostroノート (Core2Duo P8600/2.40GHz × 2) +linuxBean14.04(Linux) |
00:25 | 00:15 | 00:15 | - | 00:15 | 1548 | |
EPSON Endeavor ST120 (Core2Duo T9800/2.93GHz × 2) +linuxBean14.04(Linux) |
- | - | - | - | - | 2034 | |
ASUS K55DR (A8-4500M/1.9GHz × 4) +linuxBean14.04(Linux) |
00:35 | 00:18 | 00:13 | 00:13 | 00:13 | 2674 | |
Dell Vostro3300 ノート (Core i5 480M/2.66GHz × 2) +linuxBean14.04(Linux) |
00:23 | 00:13 | 00:10 | 00:10 | 00:10 | 2456 | |
HPデスクトップ (i5-3470/3.20GHz × 4) +Windows7+MinGW32bit版 |
00:20 | 00:11 | 00:07 | 00:07 | 00:07 | 6568 |
※HPデスクトップのみLinuxブートが起動できなかったのでWindows環境のQtで実行
EeePCでもソースファイルが多くなるとAtomでも効果はあるっぽいけど所詮は初期Atomなのでな・・・
シングルコアは-j2が適切っぽい。
VAIO 旧PはEeePC901よりCPUは少し速いんけど、やっぱり旧世代Atomなんだよなぁ・・・。
最新のAtomは4コアで優秀だとかでうらやましい。
Core2Duoでも旧世代Atomとは段違いすぎる・・・Atom Z550の1/3以下。
デュアルコアなのでCPU数×2の-j4が適切かなー。
PassMark上のスコアでみるとAtomのZ37**代の前半はC2Dの2.0GHzより遅くて後半世代は2.0GHzより速いのかなー、なんて。
デスクトップ向けの4コアだと段違いに速いすぎる・・・ CPUが多く速いほどビルドが快適になるね。クアッドコアなので-j8がいいのかなー?
- -jオプションの効果はありまぁす!
ということでWindowsでもLinuxでも-jオプションは有効。 MacのQtでも多分影響ありかな?便利なオプションだね。
Qtも最初からつけてくれればいいのに・・・と思うけど環境によってCPU数も変わるし
CPU数の指定なしだとスラッシングの可能性もあるし難しいんかな・・・