Windows 10 WSL2 のコンパイル速度比較

Windows 10 May 2020 Update (2004) で WSL2 がリリースされました。

Microsoft: WSL 2 の新機能

I/O が速くなっているらしいので、いつも Android + Termux でテストしている「コンパイル時間の計測」をしてみました。

PC WSL1 WSL2
Core i7-6700K 4.0GHz (4C8T) 40s 29s
Ryzen 7 1800X 3.6GHz (8C16T) 26s 21s

・「WSL1」「WSL2」はビルド時間で単位は秒。値が小さい方が高速
・Windows 10 + WSL (Ubuntu 18.04LTS) clang 8.0 での比較

WSL1 にくらべて WSL2 の方がだいぶ速くなっています。Android の UserLAnd と Termux の関係に似ているかもしれません。

さらに直接 install した Linux と比較してみました。

PC clang WSL1 WSL2 Linux
Core i7-6700K (4C8T) clang 8 40s 29s 27s
Core i7-6700K (4C8T) clang 6 40s 28s 26s

・「WSL1」「WSL2」「Linux」はビルド時間で単位は秒。値が小さい方が高速
・WSL = Windows 10 + WSL (SATA SSD: MX500 500GB)
・Linux = Ubuntu 18.04LTS (SATA SSD: TS256GMTS400)

WSL2 のビルド時間が Linux を直接 install した場合に近くなっています。

なおテストは同じ PC を使っていますが、Windows と Linux で使用している SSD が違うので同一条件になっていません。速度差は OS の違いではなく SSD 性能差の可能性もあります。

以下スマートフォン他との比較

Device OS clang ビルド時間
Ryzen 9 3950X 3.5GHz WSL1 8 10s
Ryzen 7 1800X 3.6GHz WSL2 8 21s
Ryzen 7 1800X 3.6GHz WSL1 8 26s
Core i7-6700K 4.0GHz Ubuntu 18.04 8 27s
Core i7-6700K 4.0GHz WSL2 8 29s
Core i7-4790K 4.0GHz Ubuntu 18.04 8 31s
Google Pixel 3 Snapdragon 845 Termux 8 35s
Core i7-6700K 4.0GHz WSL1 8 40s
Essential Phone PH-1 Snapdragon 835 Termux 8 40s
Google Pixel 3 Snapdragon 845 UserLAnd 8 51s
Essential Phone PH-1 Snapdragon 835 UserLAnd 8 62s
A10-7870K 3.9GHz Ubuntu 18.04 8 69s
Huawei P30 Lite Kirin 710 Termux 9 71s
Huawei P30 Lite Kirin 710 UserLAnd 8 85s
Jetson Nano Tegra X1 Ubuntu 18.04 8 118s
ZenFone AR ZS571KL Snapdragon 821 Termux 8 125s
Raspberry Pi 4 BCM2711 (arm64) Ubuntu 19.10 8 146s
Nexus 5X Snapdragon 808 Termux 8 178s
Raspberry Pi 4 BCM2711 (armv7l) Raspbian 10 8 203s
Raspberry Pi 3 BCM2837 (arm64) Ubuntu 18.04 8 340s

・「ビルド時間」の単位は秒、値が小さい方が高速
・clang = clang の Version (コンパイラの Version によって速度が変わるので注意)

I/O 速度を見ると WSL2 だけで十分な気もしますが、WSL1 の方が手軽で便利な点もあります。例えばネットワークの場合 WSL2 には内部のローカルな IP Address が割り振られます。サーバーを立てて外部の PC からアクセスしたい場合、WSL1 は簡単に実現できますが WSL2 では外から直接見えなくなります。VirtualBox などの仮想マシンと同じで、port forwarding の設定が必要になるようです。

WSL1 同様、WSL2 からも Windows の exe を呼び出すことができました。つまり WSL 上で ssh server を起動しておき、Linux 側の ssh 経由で cmd.exe を実行することもできます。この辺が VirtualBox のような閉じた仮想マシンと異なるところです。

しばらくは使い分けながら併用してみたいと思います。

関連ページ
Compile Benchmark

関連エントリ
4倍速い Ryzen 9 3950X の UE4 コンパイル速度
Jetson Nano / Clang の Version とコンパイル速度の比較
Snapdragon 835 と 845 のコンパイル時間の比較&浮動小数点演算能力
Snapdragon 845 の浮動小数点演算速度
ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
ARM CPU 上の開発環境とコンパイル時間の比較
AMD CPU Ryzen とコンパイル時間の比較 (2)
AMD CPU Ryzen とコンパイル時間の比較
ARM CPU の浮動小数点演算能力まとめ