Macbook12インチでスマホアプリ開発してた人

     リリース済みのアプリの多くはCordova製なので、最初はブラウザさえあれば開発出来るものでした。でも途中からアプリにファイル保存機能を付けたり、Firebaseの機能を使い始めるとエミュレータを使った開発が必要になって来て、非力なMacbook12で開発作業をするのは苦行に近いものでした1
     で、ようやく以前から欲しかったMacbookProを購入し、別世界を体感しています。

    Macbook Pro 2021 表
    Macbook Pro 2021 裏


    Macbook12との比較 上
    Macbook12との比較 横


     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-2600K467秒だったのに対して、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-2600K1208445383ミリ秒(約2週間)掛かった処理がApple M1 Proだと370448881ミリ秒(約4日)でした。やはり断然速いですね。


    1. Flutter製アプリは別のUbuntu機を使って開発してます。戻る 

    2. Rosettaって何?状態だったのでM1 Macbookのコンパイル環境を作るのに手間取りましたが、ソースコードそのものの修正は不要でした。戻る