ツナ缶雑記

ぐうたらSEのブログです。主にマイクロソフト系技術を中心に扱います。

Core i7 4790K と Ryzen 9 5900X におけるビルド速度の比較

f:id:masatsuna:20210508172345p:plain

本シリーズのまとめはこちらにあります。

tsuna-can.hateblo.jp

皆さんが自作 PC を作る目的は何でしょうか。 多くの方が PC ゲームを快適に行うことか、動画作成や画像編集など、クリエイティブな作業を快適に行うことなのではないかと思います。 CPU や GPU の新製品が出ると、ベンチマークソフトやゲーム、動画作成の時間など、様々な検証が行われます。 しかし、 IT エンジニアにとって有益な情報はほとんど出てきません。 IT エンジニアとして知りたいのは、プログラム開発をどの CPU なら快適に行えるのか、ということなんです。 しかし、そういった情報は全くと言っていいほど出てきません(需要がないんでしょうけど)。

今回は今まであまり語られることのなかったプログラム開発の側面から、第 4 世代 Core i7 と、 Ryzen 9 5900X を比較してみようと思います。

環境

今回比較する 2 台のマシンは以下の通りです。 他にもいろいろ違う点はありますが、検証内容と関係ないものは記載を省いています。

項目 4th Core i7 構成 Zen3 Ryzen 構成
CPU Intel Core i7 4790K AMD Ryzen 9 5900X(PBO は有効に設定)
メモリ DDR3 4GB × 4枚 DDR4 32GB × 2枚(3200MHz)
記憶装置 80GB 2.5インチSATA SSD 1TB NVMe M.2 SSD(PCIe 4.0)
マザーボード ASUS MAXIMUS VII HERO MSI B550 TOMAHAWK
CPUクーラー 前マシンから使いまわしの巨大なトップフロー型クーラー(もはや型番とか記憶にない) Nocture NH-D15

ちなみにこれらの CPU の Cinebench R23 におけるベンチマークを以下に貼っておきます。

項目 Intel Core i7 4790K AMD Ryzen 9 5900X
Multi Core 4,936 21,878
Single Core 1,069 1,622

比較するのもアレですが、相当な性能差がある、ということを理解してください。 Core i7 4790K は 2014 年にリリースされた、当時はそれなりに強い CPU でした。 それに対して Ryzen 9 5900X は、 2020 年現在最強に近い性能を持つ CPU です。 どちらも同一世代内では最強に近い性能を持つ CPU です。

検証内容

検証は .NET 5 のアプリケーションをビルドし、ビルド時間を比較する方法で行います。 対象のソースコードは、 2020 年 12 月末に取得したものを使用します。 各アプリケーションは、 NuGet パッケージを参照しているため、事前にパッケージをすべてローカルにダウンロードした状態でビルドを行います。 ローカルファイル内にパッケージがあれば、ダウンロードする処理は行われないため、ネットワークの影響を無視することができます。

今回検証の対象となるアプリケーションは、以下の 2 つを利用します。

eShopOnWeb

github.com

こちらはマイクロソフト社が開発している .NET Core のリファレンスとなるアプリケーションです。 リファレンスとして使用するもので、プロジェクトの数も 9 つしかありません。

Entity Framework Core

github.com

.NET Core で使用できる代表的な O/R マッパーです。 こちらはそれなりに規模が大きく、 46 プロジェクトで構成されています。

検証手順

eShopOnWeb

上述のリポジトリからソースコード一式を取得します。 取得したディレクトリをカレントディレクトリに設定し、コマンドプロンプトから以下のコマンドを実行します。

dotnet restore eShopOnWeb.sln

これで NuGet パッケージをローカルにダウンロードできます。 続いて、 CPU がアイドル状態になり、温度も一定になったことを確認してから、以下のコマンドを実行します。

dotnet build eShopOnWeb.sln

実行すると、実行時間が最後に表示されるので、その時間を記録します。 この作業を各環境で 7 回ずつ実行します。

Entity Framework Core

上述のリポジトリからソースコード一式を取得します。 取得したディレクトリをカレントディレクトリに設定し、コマンドプロンプトから以下のコマンドを実行します。

restore.cmd

これで NuGet パッケージをローカルにダウンロードできます。 続いて、 CPU がアイドル状態になり、温度も一定になったことを確認してから、以下のコマンドを実行します。

build.cmd

実行すると、実行時間が最後に表示されるので、その時間を記録します。 この作業を各環境で 5 回ずつ実行します。

検証結果

eShopOnWeb のビルド時間

f:id:masatsuna:20210508164216p:plain

Entity Framework Core のビルド時間

f:id:masatsuna:20210508164237p:plain

結果を見ても明らかなとおり、 PC を最新のものに交換することで、かなりビルド時間の高速化ができたと言えます。 特に Entity Framework Core の方は、ビルド時間が半分以下まで短縮化されています。 ビルドを待っている時間は、 IT エンジニアにとって最もイライラする時間だと思います。 PC を最新化することで、そういった時間を削減することができるのです。

Cinebench R23 のスコアと比較すると、スコアが数倍になったからと言って、処理速度が数倍になる、ということではないことがわかります。 しかし、スコアが大きく上がっていれば、如実に実行時間として表れることは間違いなく言えそうです。

考察

ビルド時の PC のリソース消費を見ていると、ほとんどが CPU の処理時間でした。 ディスク IO など、 CPU とは異なる箇所がボトルネックになるかなーと想像していたのですが、 CPU のほうがボトルネックになるようです。 なお今回のマシンはメモリの速度も大きく異なるため、その性能差が結果に大きな影響を与えた可能性も考えられます。

今回検証したマシンは、世代も全く違いますし、メモリの速度も大幅に違います。 CPU の性能差だけで、これだけの差がついたと結論付けることはできません。 そのあたりは十分に注意して結果を見るようにしてください。

まとめ

これらの PC は、 2014 年と、 2020 年、それぞれの時点でそれなりのスペックを誇る PC であると思います。 6 年たってしまうと、相当に時代遅れなものになってしまうことが、改めて証明されたように思います。

今後同様の検証を何回かに分けて行おうと思います。 プログラム開発を行う上で、どういった環境がベストなのか、自分なりにいろいろ検証した結果をまとめていこうと思います。

パーツの紹介

今回の検証で使用した PC パーツは以下から購入可能です。