目下、AppleScriptで組んだ割と大きな規模(中規模ぐらい?)のシステムのアップデート開発依頼を受けて、開発機としてM2 Mac mini(RAM 8GB)が来ています。
このため、M1 Mac mini(macOS 13.6.7)、M2 Mac mini(macOS 14.5)、そしてオリジナルのシステムが動いているIntel Mac mini(2014)(macOS 10.12.6)の3台が積み上がっている状態です。さして場所をとっていませんが……。
M2 Mac miniがどの程度M1 Mac miniからスピードアップしているのか、についてはこれまで比較する機会がありませんでした。店頭でちょっとさわって試すぐらいだと、単純ループ10億回とかの「実用性皆無」な内容でチェックするほかありませんでした。
いまのコンピュータは速くなっている箇所とそうでもない箇所の「差」が大きくなっていて、特定分野の処理だけやたら速くなっている(あるいはその逆も)という現象をよく見かけます。
そこで、いろんな分野のAppleScriptで実行速度を比較してみました。
■Pages書類の全書き出しとソート+連結
実際の、本気で業務をまるごとこなすようなAppleScriptのシステムを動かすと、どうなるんでしょうか?
たとえば指定フォルダ以下のPages書類をSpotlight検索ですべてピックアップして個別にPDF書き出しを行い、ファイル名順に連結するようなAppleScriptがあります。
ちょうど、いま作っている書籍「Pages+AppleScriptで本を作ろう!」が現段階で320ページなので、テスト用には十分な規模でしょう。
これを処理すると、
M1 Mac mini(RAM 16GB):2分35秒
M2 Mac mini(RAM 8GB):2分30秒
と、M1よりは若干速いものの、騒ぐほどではないぐらいの差でした。誤差範囲内といってよいでしょう。数回書き出しを行なって落ち着いた結果を採用しています(初回はどうもキャッシュせずに遅くなるようで)。
■8,000箇所の駅×700箇所の位置情報の距離計算とソート
日本全国の鉄道駅8,000箇所と全国700箇所(当時)のゲームセンター施設の距離計算を行い、「最寄駅が一番遠いゲームセンター」を計算するAppleScriptを試してみました。このぐらいの規模の処理なら、割と現実的なシステムといえるでしょう。
M1 Mac mini(RAM 16GB):1分 31秒
M2 Mac mini(RAM 8GB):1分 23秒
数回実行してみましたが、ほぼ同じ結果になりました。9%ぐらいM2が高速です。さきほどの結果よりも性能向上幅が大きくなっています。
■指定桁の順列組み合わせ計算(Permutation)
このあたりから、様子がおかしくなってきます。結果は結果として受け取らざるを得ないのですが、振れ幅がおかしい。9桁のデータの順列組み合わせ計算で、
M1 Mac mini(RAM 16GB):62.7379秒
M2 Mac mini(RAM 8GB):30.564秒
約2倍。
■Numbersの選択中のセル(1000×5)への値の設定
GUIアプリであるNumbersの表の選択範囲(1,000行×5列)に対して、連続する値を書き込むテストです。Numbersは表からの値の取得が高速である反面、値の書き込みについては信じられないほど遅くなるという特性を持っています。この、Numbersの表データ設定はさまざまな「回避技」を生むことにもなっています。
ひとえに、このNumbersへの書き込み処理に時間がかかるためです。これを比較すると、
M1 Mac mini(RAM 16GB):96.3056秒
M2 Mac mini(RAM 8GB):35.1062秒
おおよそ、M2が2.7倍速いという結果になりました。意味がわかりません。
一応、AppleScriptのバースト実行モード=アプリ側の応答を待たずに値設定を行う「ignoring application responses」指定で実行すると、
M1 Mac mini(RAM 16GB):2.76秒
M2 Mac mini(RAM 8GB):2.42秒
と、処理時間の短縮が頭がおかしいレベル(通常は指定前の33%ぐらいの時間になる)であるものの、CPU間の差は10%程度と、納得できるレベルに落ち着きます。
ちなみに、Numbers側はAppleScriptが処理を終了したあとも処理を継続し、当初と同じぐらいの時間で処理を終えました。
■画像の空白検出
上位機種でトンでもなく(遅い)結果が出たりと、さまざまな場所で物議をかもしている、画像の空白検出処理。
処理速度を測る場合には、他のプログラムをなるべく起動しないとか、いろいろ条件を揃えてあげる必要があるわけですが、今回も波乱の結果を出すものでしょうか。慎重を期して、10回実行して平均値を取っています。単位は秒で、数値が小さく、バーが短いほうが高速です。
1×1の画像処理については、データが小さすぎて傾向をつかむのには適していないようですが、4Kや8Kの画像を扱うとM1より遅い処理を見かけます。
グラフにすると、
こんな感じで……M2のほうがわずかに遅い処理が散見されます。正直、このベンチマークは4Kとか8KとかフルHDの画像の1つの点だけ点灯しているものを検出しろというもので、実用性はあるものの、ベンチマークとしては特殊な内容といえるでしょう。
■総評
ときおり、目が覚めるような処理速度を叩き出すことがあると思えば、日常的に動かしている処理だと5〜10%程度の処理速度向上におさまっています。全体的には、ほぼこのような評価になることでしょう。
同じく16GBのRAMを搭載しているマシンであるとか、上位機種のM2 Proを搭載したマシンではどうなのかといった検証を行いたかったところです(手元にないのでテストできないのですが)。
ただ、決してM2 miniはM1より遅いということはありませんし、M1からの買い替えという話は同意できないものの、悪くないマシンだと思います。