Macbook12インチでスマホアプリ開発してた人
リリース済みのアプリの多くはCordova製なので、最初はブラウザさえあれば開発出来るものでした。でも途中からアプリにファイル保存機能を付けたり、Firebaseの機能を使い始めるとエミュレータを使った開発が必要になって来て、非力なMacbook12で開発作業をするのは苦行に近いものでした1。
で、ようやく以前から欲しかったMacbookProを購入し、別世界を体感しています。
Macbook12と比較するとかなり大きく、重い(1.6Kg)ので持ち歩く気にはなりません。
CPU性能比較1
以前の記事で2×6列のマンカラカラハで先手必勝を読み切るまでに要する時間を3つのプログラミング言語(Dart,TypeScript,C++)で比較しましたが、今回は同じC++のソースを使ってCPUによる比較をしてみたいと思います。IntelのCore i7-2600K
とARM系Apple M1 Pro
、4コアと10コア、比較の基準がバラバラですが、単に自分が持っているPCでどれだけ性能が上がったか知りたいだけです。
まずはCore i7-2600K
(Ubuntu機)側から。前回の記事と出力内容が違うのは、前回の記事にも書いた通りバグがあったためです。
$ ./mancala.out
0,2,2,2,2,2,2,0,2,2,2,2,2,2,
=== result = 4, 5, i = 1
=== result = 3, 5, i = 2
=== result = 1, 6, i = 3
=== result = 3, 5, i = 4
=== result = 5, 5, i = 5
=== result = 4, 5, i = 6
=== result = 5, 5, i = 7
=== result = 4, 5, i = 8
=== result = 4, 5, i = 9
=== result = 5, 6, i = 10
=== result = 5, 6, i = 11
=== result = 5, 5, i = 12
=== result = 5, 5, i = 13
=== result = 5, 5, i = 14
=== result = 6, 5, i = 15
=== result = 12, 5, i = 16
=== result = 999, 5, i = 17
467263.232000[ms]
999, 5
前回の記事より実行時間が短縮しているのもバグを修正した所為で、前回と同じPCで実行しています。
続いて、Apple M1 Pro
側です。初めてのARMベースのCPUということでコンパイルするのも一手間2だったのですが、この記事を参考にして解決できました。
% ./mancala.out
0,2,2,2,2,2,2,0,2,2,2,2,2,2,
=== result = 4, 5, i = 1
=== result = 3, 5, i = 2
=== result = 1, 6, i = 3
=== result = 3, 5, i = 4
=== result = 5, 5, i = 5
=== result = 4, 5, i = 6
=== result = 5, 5, i = 7
=== result = 4, 5, i = 8
=== result = 4, 5, i = 9
=== result = 5, 6, i = 10
=== result = 5, 6, i = 11
=== result = 5, 5, i = 12
=== result = 5, 5, i = 13
=== result = 5, 5, i = 14
=== result = 6, 5, i = 15
=== result = 12, 5, i = 16
=== result = 999, 5, i = 17
274362.594000[ms]
999, 5
同じ結果を得るのに要した時間はCore i7-2600K
が467秒
だったのに対して、Apple M1 Pro
では274秒
でした。
ちなみに実行結果の最後の行、999, 5
は、以下の表の5
の位置を先手が初手に選べば、先手が勝てることを意味しています。2×6列のマンカラカラハは先手必勝のゲームです、詳しくはこちらの記事に書いています。
0↓ | 後手 | 7↑ | |||||
13 ← |
12 ← |
11 ← |
10 ← |
9 ← |
8 ← |
||
先手 | |||||||
1 → |
2 → |
3 → |
4 → |
5 → |
6 → |
3×6列や4×6列のカラハでどうなるのか確認したいところですが、CPUがそこそこ速くなったぐらいでは結果を得るのに数ヶ月以上掛かると思われるので他の工夫が必要だと思ってます。
ついでにMacbook12インチでも試してみました。
% ./mancala.out
0,2,2,2,2,2,2,0,2,2,2,2,2,2,
=== result = 4, 5, i = 1
=== result = 3, 5, i = 2
=== result = 1, 6, i = 3
=== result = 3, 5, i = 4
=== result = 5, 5, i = 5
=== result = 4, 5, i = 6
=== result = 5, 5, i = 7
=== result = 4, 5, i = 8
=== result = 4, 5, i = 9
=== result = 5, 6, i = 10
=== result = 5, 6, i = 11
=== result = 5, 5, i = 12
=== result = 5, 5, i = 13
=== result = 5, 5, i = 14
=== result = 6, 5, i = 15
=== result = 12, 5, i = 16
=== result = 999, 5, i = 17
440331.482000[ms]
999, 5
440秒
ということで意外だったのですがCore i7-2600K
(Ubuntu機)よりMacbook12インチ(Intel Core M-5Y51
)の方が速いんですね。普段メインで使っていたUbuntu機の方が断然レスポンスが良いと感じていたのはメモリ(12GB)の差でしょうか?Macbook12インチ(メモリ8GB)もメモリ増設していればそこそこ開発用として使えていたのかも知れません。
ちょっと気になったので検索したらこんなページがありました。シングルコアで比較すると結構いい勝負しているようです。それでもCoreMの方が速いというのはやはり合点がいかないのですが、Ubuntu機の方は他の多くのプログラムが動いている中で試していたのでその所為だと思われます。
CPU性能比較2
話が逸れましたがもう一つ、以前の記事で「歩不成の詰将棋」を読み切るのに2週間掛かったことを紹介しましたが、この時使ったスクリプトを今回購入したMacbook Proで実行してみました。
$ coffee game.coffee
hmmxxxggggkkkkyyyffffffffffff
9 8 7 6 5 4 3 2 1
| | | | | |f|T| |y|1
| | | | | | | | | |2
| | | | |H| |F|o| |3
| | | | | |X| |f|f|4
| | | | | | | | | |5
| | | | | | | | | |6
| | | | | | | | | |7
| | | | | | | | | |8
|O| | | | | | | | |9
F
first: i = 1, kind = Hi, temp = [{"turn":-1,"status":0,"posi":[5,3],"id":"q6owepmi"},[5,2],-589,1,{"koma":{"turn":-1,"status":0,"posi":[9,9],"id":"ribd4do4"},"posi":[9,8],"score":-614,"status":0}]
first: i = 2, kind = Fu, temp = [{"turn":-1,"status":0,"posi":[3,3],"id":"g8a244eb"},[3,2],-532,1,{"koma":{"turn":-1,"status":0,"posi":[5,3],"id":"q6owepmi"},"posi":[5,2],"score":-542,"status":1}]
first: i = 4, kind = Fu, temp = [{"turn":-1,"status":0,"posi":[3,3],"id":"g8a244eb"},[3,2],-522,1,{"koma":{"turn":-1,"status":0,"posi":[3,3],"id":"g8a244eb"},"posi":[3,2],"score":-554,"status":0}]
first: i = 5, kind = Fu, temp = [{"turn":-1,"status":0,"posi":[3,3],"id":"g8a244eb"},[3,2],-594,0,{"koma":{"turn":-1,"status":0,"posi":[4,4],"id":"a7qa7o3i"},"posi":[3,4],"score":-702,"status":0}]
hmmxxxggggkkkkyyyffffffffffff
9 8 7 6 5 4 3 2 1
| | | | | |f|T| |y|1
| | | | | | |F| | |2
| | | | |H| | |o| |3
| | | | | |X| |f|f|4
| | | | | | | | | |5
| | | | | | | | | |6
| | | | | | | | | |7
| | | | | | | | | |8
|O| | | | | | | | |9
F
初手経過時間: 370448881ミリ秒
Core i7-2600K
で1208445383ミリ秒(約2週間)
掛かった処理がApple M1 Pro
だと370448881ミリ秒(約4日)
でした。やはり断然速いですね。