Windows Subsystem for Linux vs Cygwin vs VirtualBox
今更ながら自宅の Windows 10 マシンに Windows Subsystem for Linux の Ubuntu をインストールしたので Cygwin や VirtualBox 内で動く Fedora と性能を比較してみた。
測ったのは、各環境で yash-2.47 をビルドするのにかかった秒数である。そもそも OS が違ふとか、GCC のバージョンが違ふとか、失敗したりスキップされたりするテストの数が違ふとか、いろいろな差があるので結果の数字は参考程度に捉へて欲しい。
\ | WSL | Cygwin | VirtualBox |
---|---|---|---|
configure | 5.7 | 10.3 | 2.5 |
build | 2.9 | 4.8 | 2.7 |
test | 59 | 120 | 10 |
全体の傾向としては、Cygwin が圧倒的に遅い。WSL は Cygwin の 2 倍位速い。VirtualBox は WSL と同じ位から数倍の速さまでばらつきがある。Cygwin → WSL → VirtualBox の順に速くなるので、より低層の仮想化を行ってゐるほど速いといふ傾向になってゐる。
作業別にみると、configure と test はシェルスクリプトにおいてたくさんのプロセスが頻繁に起動される処理を含んでをり、プロセス起動にかかる時間が足を引っ張ってゐると見える。一方で build はコンパイラーの各プロセスがじっくりと処理を行ふのでシステムコール呼び出しのオーバーヘッドによる影響は少ないはずである (がそれでも Cygwin は相当に遅い)。
速さ以外の面ではどうかといふと、
- VirtualBox は中の OS と外の Windows とでファイルシステムやユーザーアカウント等の様様な要素が独立してゐるので、それらの間でやり取りをするのに手間がかかる。WSL は、Linux 内部から Windows のファイルを読み書きできるが逆はできず、ユーザーアカウントも独立してゐる。Cygwin はファイルシステムもユーザーアカウントも Windows と共通である。
- Cygwin はソフトウェアパッケージをインストールする際に一旦全ての Cygwin プロセスを止める必要がある。VirtualBox と WSL はディストリビューションの仕様に従ふ (のだが普通は他のアプリケーションを実行したままソフトウェアパッケージをインストールできるだらう)。
- Cygwin では、Unix ドメインソケットを使用してプロセス間でファイル記述子を転送する機能が動かない等の制約がある。WSL も logname コマンドが動かない等の制約がある。
| 固定リンク
コメント