Spresense SDK開発環境のビルド実行時間をプラットフォームごとに比較してみました。
実行環境
-
Windows PCのスペック
-
OS: Windows 10 Pro 64 ビット
-
プロセッサ: Intel Core i7-10700 @ 2.90GHz
-
メモリ: 16GB
-
Linux PCのスペック
-
OS: Ubuntu 16.04
-
プロセッサ: Intel Core i7-4770 @ 3.40GHz
-
メモリ: 8GB
-
M1 Macのスペック
-
OS: macOS Big Sur 11.6
-
プロセッサ: Apple M1
-
メモリ: 8GB
-
VirtualBox(1)の設定
-
Windows PC に Ubuntu20.04 インストール
-
Main Memory: 4GB
-
プロセッサ数: 1
-
マザーボード チップセット: PIIX3
-
VirtualBox(2)の設定
-
Windows PC に Ubuntu20.04 インストール
-
Main Memory: 4GB
-
プロセッサ数: 4
-
マザーボード チップセット: ICH9
実行コマンド
①〜④の実行コマンドを以下に示します。実行時間は単純にtime
コマンドで計測しています。
① コンフィグレーション
例として、Arduinoパッケージを作成するためのコンフィグレーションを実行したときの時間を計測します。コマンド実行中に、ネットワーク越しにzipのダウンロードも行っていてその時間も含まれます。
time ./tools/config.py default device/adc device/camera device/charger device/emmc device/hostif device/pwm device/sdcard feature/asmp feature/audio_player feature/audio_recorder feature/audio_recognizer feature/audio_synthesizer feature/dnnrt_mp feature/gnss feature/imageproc feature/libcxx feature/lte_stub_mbedtls feature/step_counter feature/digital_filters -- +CXD56_I2C_DRIVER=n +CXD56_I2C1 +CXD56_I2C1_SCUSEQ=n +CXD56_LTE_LATE_INITIALIZE=y +CXD56_HPADC0_INPUT_GAIN_M6DB +CXD56_HPADC1_INPUT_GAIN_M6DB +CXD56_USE_SYSBUS=n -LTE_SYSCTL=y
② フルビルド
①のコンフィグレーション実行後のフルビルド時間を計測します。
time make -j
③ 再ビルド
②でフルビルド済みの状態からソースコードを何も変更せずに再度ビルドを実行した時間を計測します。
time make -j
④ distclean
コンフィグレーションファイルの削除を含めてクリーンビルドを実行したときの時間を計測します。
time make -j distclean
実行結果
(単位:秒)
環境 | MSYS2 | WSL | WSL2 | Linux | M1 Mac (x86_64) | M1 Mac (arm64) | Virtual Box(1) | Virtual Box(2) |
---|---|---|---|---|---|---|---|---|
① コンフィグレーション | 96.723 | 23.816 | 2.245 | 3.789 | 6.657 | 6.461 | 3.623 | 3.960 |
② フルビルド | 262.530 | 80.102 | 17.194 | 34.747 | 84.001 | 47.073 | 130.303 | 40.734 |
③ 再ビルド | 158.166 | 37.430 | 3.640 | 5.457 | 11.833 | 12.107 | 18.129 | 9.487 |
④ distclean | 167.876 | 39.336 | 2.889 | 6.103 | 17.699 | 17.641 | 40.205 | 12.193 |
感想
- WSL2最強説! (参考:WSL2でSpresense開発環境を構築する)
- WSLに比べても圧倒的に速いです。
- VirtualBoxも遅い...設定次第で大きく変わる
- MSYS2環境を使うのは止めた方が良い。 "Time is Money."
- M1 MacはRosetta2経由のx86版とネイティブarm64版の両方のgccで実測
- ネイティブ版の方がコンパイルは2倍ぐらい速そう
このベンチマーク結果はPCスペックやアンチウィルスソフトの影響などにも依存するのであくまで参考値です。