Windows 10 May 2020 Update (2004) で WSL2 がリリースされました。
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 の浮動小数点演算能力まとめ