概要
WSL だと、 Mac の 10 ~ 100 倍の時間がかかっていることが発覚した。
環境
当然ですが、同じ通信回線を利用して計測しています。
マシンごとの差分は以下の通り。
- | Windows | Mac |
---|---|---|
OS Version | Windows11 | Ventura13.6 |
チップ | AMD Ryzen 7 4700U with Radeon Graphics 2.00GHz | Apple M2 |
コア数 | 8 | 8 |
memory | 24GB | 24GB |
所要時間比較
全く同じ Dockerfile 、 docker-compose.yml ファイルを使って build を行った。
1. WSL で実行時
$ docker compose build
...
=> [2/6] RUN export DEBIAN_FRONTEND=noninteractive && apt -y update && apt 291.3s
=> [3/6] RUN apt-get install -y --no-install-recommends curl gcc g 3720.6s
=> [4/6] WORKDIR /workspace 0.0s
=> [5/6] COPY ./requirements.txt requirements.txt 0.0s
...
- apt update に 291 秒
- apt-get install に 3720 秒
かかっている。
ちなみに、WSL での build は、最終的に pip install 実行中にタイムアウトした。
2. Mac で実行時
% docker compose build
[+] Building 60.4s (10/10) FINISHED
...
=> [2/6] RUN export DEBIAN_FRONTEND=noninteractive && apt -y update && apt -y upgrade 11.3s
=> [3/6] RUN apt-get install -y --no-install-recommends curl gcc g++ git net-tools vim libopencv 37.3s
=> [4/6] WORKDIR /workspace 0.0s
=> [5/6] COPY ./requirements.txt requirements.txt
...
Mac の場合、
- apt update に 11 秒
- apt-get install に 37 秒
で済んだ。当然、全く同じパッケージをインストールさせている。その前提の下で、これだけの時間差が生じている。
端的に言って、WSL は通信が遅すぎてマズイ。
関連記事
どうやら対策は存在するらしいが、windows の設定を変更して元に戻せないリスクを考えると実行に踏み切れない。
Linuxと違って全く経験がないので、どうしても必要になるまでは手を出したくない。