AMD CPU Ryzen とコンパイル時間の比較

比較的安価ながら多コアの CPU、AMD Ryzen はコンパイルの長い長い待ち時間を減らしてくれるかもしれません。Ryzen PC を手に入れたので実際に比較してみました。Skylake Core i7-6700K で 27分かかる UE4 のビルドが Ryzen 1800X ではおよそ 20分まで短縮しています。

CPU Clock Core/Thread RAM Storage 1回目 2回目
(1) Core i7-4790K (Haswell) 4.0GHz 4 / 8 16GB HDD 39分 32分
(2) Core i7-6700K (Skylake) 4.0GHz 4 / 8 32GB SSD 27分 26分
(3) Ryzen 7 1800X 3.6GHz 8 / 16 32GB SSD 20分 19分

上の表は UE4 4.16.0 4.15.2 GitHub 版のビルド時間の比較です。Config は Development Editor。ビルドは Clean しながら 2回連続で行いました。1回目、2回目は実際にかかったコンパイル時間を意味しています。

(1) の Haswell は RAM 容量が半分かつ HDD なのでかなりハンデがあります。純粋な CPU の能力ではなく環境で差が生じているので、比較は参考程度にお願いします。2回目はある程度キャッシュに乗った状態なので差が縮まっていることがわかるかと思います。

(3) Ryzen はクロックが低いものの (2) Skylake 比で 7分ほど短縮できました。多 core 化の恩恵はプログラマにとっても非常に大きいようです。よりパワフルな CPU が入手しやすくなったのはとても喜ばしいことです。

CPU core 数が倍になっていますがビルド時間は必ずしも半分にはなっていません。UnrealBuildSystem はスレッド化されていますが完全な同期型となっています。並列実行可能なソースコンパイルがすべて完了してからシングルスレッドでリンクを行っているようです。

他にも UnrealHeaderTool 等並列化されていないタスクがあるので、並列度が上がれば上がるほど全体のビルド時間にシングルタスク部分の割合が増えていくことになります。(アムダールの法則) シングルタスクの割合が小さければもっと差が開いていたものと思われます。