M1なMac miniでのRAW現像やビルドの速度を比較してみる
はじめに
これは Mobility Technologies Advent Calendar 2020 の25日目の記事です。
メリークリスマス! tomoya0x00 と言います。
主に写真のRAW現像マシンとしてApple M1なMac mini(メモリ16GB、SSD512GB)を衝動買いしたので、
現像速度とついでにAndroidアプリのビルド速度を既存PCと比較してみます。
RAW現像速度の比較
比較対象のPCスペック
ThinkPadの25周年記念モデルです。完全に私物。
キーボードは最高ですが、スペック的にはそろそろ不足を感じる子です。
項目 | 詳細 |
---|---|
製品名 | ThinkPad 25 |
CPU | Core i7-7500U(2コア) |
メモリ | DDR4 16GB |
SSD | 512GB |
OS | Windows 10 Pro 64bit |
計測条件
- Adobe Lightroom 4.1を使用
- Mac miniではもちろんM1対応版を使う
- Lightroomに取り込み済みのRAWデータを20枚書き出して処理時間を計測
- 画像サイズは 5184 x 3888
- LUMIX G9 Proで撮影したRAWデータ
- 書き出し設定は最高画質
- ファイル形式:JPG
- 寸法:フルサイズ
- 画質:100%
- 計測はスマホのストップウォッチアプリで実施
- もっと良い方法があれば教えて欲しい・・・
- 画像サイズは 5184 x 3888
- 他のアプリ(Chromeなど)は立ち上げっぱなし
- 普段の現像作業での処理時間が知りたいので
計測結果
回数 | ThinkPad 25 | Mac mini |
---|---|---|
1回目 | 105秒 | 24秒 |
2回目 | 93秒 | 22秒 |
3回目 | 92秒 | 22秒 |
え、こんなに差が出るの??
速すぎませんかM1…。
お互いに最速の処理時間を比較しても、 約4.2倍、Mac miniが速いです。
しかもThinkPad 25はRAW現像中にファンの回転数が上がっているのがわかりますが、
Mac miniはほぼ変化なしで無音です。
編集作業もとても快適なので、RAW現像用に買ったのは大正解でしたね。
まとめ
M1なMac mini、ThinkPad 25との比較では圧倒的な速さを見せつけれくれました。
(RAWデータにも依存すると思いますが)1枚のRAWデータあたり約1秒で現像してくれるので、
Apple M1なMac miniはRAW現像マシンとしてかなりお勧めできる と言えるのではないでしょうか。
余談ですが、現行のCoreシリーズと比較されたい方は、下記の記事と比べてみるのをお勧めします。
記事で使用しているのはLightroom Classic。画像サイズも異なりますが、ある程度の参考にはなると思います。
Anroidアプリのビルド速度比較
比較対象のPCスペック
今回の比較対象は会社支給のものです。
なぜMacじゃないのか?それは自分がThinkPad好きなためです。
項目 | 詳細 |
---|---|
製品名 | ThinkPad P1(Gen2) |
CPU | Core i9-9880H(8コア) |
メモリ | DDR4 64GB |
SSD | 512GB |
OS | Windows 10 Pro 64bit |
計測条件
- Android Studio 4.1を使用
- 実際の開発時に近づけるため、コマンドラインからはビルドせずAndroid Studioを操作してビルドする
- JDKは8を使用
- Mac miniではIntel版とARM64版の両方で計測
- ARM64版は Zulu Builds を使用
- Mac miniではIntel版とARM64版の両方で計測
- ビルド対象はsunflower
- ただし、後述の理由でM1なMac miniでもビルドできるworkaroundを適用したブランチを使用
- https://github.com/tomoya0x00/sunflower/tree/workaround_for_m1
- workaroundが必要なのはARM64なJDKを使う時だけ
- ただし、後述の理由でM1なMac miniでもビルドできるworkaroundを適用したブランチを使用
- 一回ビルドしてクリーン後、
Make Project
->Clean Project
を繰り返して計測-
Make Project
にかかった時間をビルド時間とみなす- Android Studioに表示されるビルド時間を使う
- 一回ビルドしておくのは、依存しているライブラリなどのダウンロード時間をビルド時間として計測してしまうのを防ぐため
- 一度ビルドしておけばローカルにキャッシュされる
-
- 他のアプリ(Chromeなど)は立ち上げっぱなし
- 普段の開発時でのビルド時間が知りたいので
計測結果
回数 | ThinkPad P1(Gen2) | Mac mini(Intel JDK) | Mac mini(ARM64 JDK) |
---|---|---|---|
1回目 | 17 s 426 ms | 19 s 954 ms | 9 s 595 ms |
2回目 | 14 s 468 ms | 20 s 987 ms | 7 s 399 ms |
3回目 | 14 s 475 ms | 16 s 917 ms | 7 s 189 ms |
Intel JDKだとThinkPad P1の方が若干有利ですが、ARM64なJDKだとダブルスコアでMac miniの方が速いですね。
ThinkPad P1も決してスペックが悪いPCでは無い(むしろ、約1年前の時点ではその当時で手に入る最速の部類のノートPCだったはず)ので、こんなに差がつくとは思いませんでした…。
(ThinkPad P1は会社PCという事もありウイルス対策ソフトが常駐しているので、その点は不利ではあります)
まとめ
- Intel JDKのままでもM1なMac miniは十分速い部類に入る
- ただし、最速とまでは言えない
- ARM64 JDKだと、倍近いビルド速度の向上が期待できる
という結果となりました。
Androidアプリ開発マシンとしても、充分に活躍できるのでは無いでしょうか。
ただし、Roomを使っている場合、ARM64なJDKだとworkaroundをおこなわないとビルドが通りません。
詳しい話は こちらのIssue をご覧ください。
ビルドエラーの内容を見るに、
- ビルド時にRoomがSQL文のVerifyをおこなっている
- これの実行にsqlite-jdbcを使っている
- そして、sqlite-jdbcはNativeのSQLiteライブラリを使っている
- しかし、Roomが依存しているsqlite-jdbcのバージョンにはMac&ARM64なSQLiteのNativeライブラリが含まれていない
ということのようです。
ただ、すでにMac&ARM64なSQLiteのNativeライブラリを含んだsqlite-jdbcはリリースされているので、
workaroundでこのバージョンを使用するようにするか、Roomがこのバージョンに依存するようになれば問題は解決されそうです。
しかし、似たような問題(Mac&ARM64であることに起因する問題)がRoom以外でも起きる可能性はあるので、
諸々落ち着くまではIntel JDKで開発するのが良いのかもしれません。
総評
購入前に思っていた以上に、M1なMac miniは実用に耐える&他のPCと比較しても充分高速だという事がわかりました。
メモリの上限が16GBというのが気になってはいたのですが、RAW現像する限りでは全く問題ありません。
数GBのスワップは発生しているのですが、これによる影響を体感したことは今のところないです。
Androidアプリの開発に使うにはエミュレーター側にメモリを食われるのが勿体無い&エミュレーターもまだPreview段階なので、
Android実機での実行を前提とするならばアプリ開発で使うのもアリじゃないかな、と思います。
最後に
いかがでしたでしょうか。
初物のM1でこの完成度&これだけ高速なのですから、来年に発売を噂されているM2なMacがどうなってしまうのか、かなりワクワクしてしまいますね。
以上で、 Mobility Technologies Advent Calendar 2020 は無事に終了です!
今までお付き合いいただきありがとうございました。
まだ見ていないアドカレの記事があれば、ぜひ目を通していただけると嬉しいです。
Discussion