見出し画像

macOS 11+M1 Macでパフォーマンス激遅危機があった

以前、フィードバックによって、macOS 11の巨大なバグを修正してもらいました。フィードバック内容が相手にされないと無力感をおぼえますが、たまーに効くこともあります(数えるぐらいには)。


ウキウキでM1 Mac miniを開封したのだが

デベロッパー向けのA12搭載のDeveloper Transition Kit(DTK)をパスし、2021年に登場したM1 Macが入手できたのも、発売後半年ぐらいが経過したころです。

ウキウキで箱を開封して、セットアップ。

起動してみると、キビキビ動きます。これはすごい。

いろいろアプリを起動してみると、とくにMail.appの起動やSafariのページ読み込みなど、腰が抜けるほど高速。

ただ、1時間ほどさわっていると「何か変だぞ?」という違和感が。

AppleScriptの実行が、なぜか低速。GUIアプリを操作する分には高速であるものの、それ以外の高度なScriptで違和感が大きくなります。

いまのAppleScript(macOS 10.10以降)は、かつてのAppleScriptとはわけがちがいます。

Cocoaの機能をダイレクトに呼び出して、GUIアプリなしでも地図描画したり、配列に入れたデータを超高速にソートしたり、従来にくらべて大量のデータ処理ができるようになってきました。

そんな、Cocoa呼び出しの機能がアホみたいに低速絶対におかしい

このCocoa呼び出しの低速化については、macOS 10.15から始まっていたとのこと。そのときにAppleに報告しても修正されなかったそうです。M1登場時だったので、フィードバックを相手にしてもらえた、という時期も味方したようです。おかげで、macOS 12でIntel MacのCocoa呼び出しの実行速度も向上しました。

あと、乱数生成も激遅。なにこれ? 2011年のMacBook Airの最底辺のマシンの10倍遅い。あとから知ったのですが、AppleScriptにかぎらず、shell scriptなどもパフォーマンスの大幅低下を起こしていたとかで、「何かおかしい」という話はいろんな場所で聞いていました。

その他、日本全国の700箇所のゲームセンターの位置情報と、日本全国の8,000箇所の駅の位置情報をかけあわせてそれぞれの最寄駅を求めて「日本で一番最寄駅が遠いゲームセンター」を求める距離計算を行うと……2012年のMacBook Pro Retinaで5分強、iMac Proで2分半ぐらいで処理できるものが、1時間以上かかります。

バグではないものの、これはおかしすぎです。

アクティビティモニタの隠し機能で原因を推測

アクティビティモニタでAppleScriptを実行中のプロセス一覧を見てみると、一応プロセス情報は見えるものの、Pコア(処理性能重視)で処理されているのかEコア(省電力性能重視)で処理されているのかがわかりません

絶対にあるはずだと思いながらアクティビティモニタをいじっていたら、「CPUの履歴」の表示に「効率性」「パフォーマンス」の区別が表示されていました。この表示から推測するに、macOS 11台では「効率性」(Eコア)でAppleScriptが実行されているようでした。10年前のへっぽこマシンよりも遅い処理の原因が判明

電子書籍「AppleScript最新リファレンス v2.8対応」より引用

レポートを英語で書かないと、伝わりにくい

Appleにフィードバックを行うさいに、きょうび日本語で書いてもよさそうなものですが、その日本語で書かれた内容は、Appleの日本オフィスのスタッフがヒーヒー言いながら英語に翻訳しているわけです。

そこで、翻訳した人が「丸める」可能性があり、技術的な内容がおかしくなる、そうでないまでも伝わりにくくなる可能性がおおいにあります。

そのため、自分がフィードバックする際には、英語でフィードバック文章を組み立てて送っています。

さらに、エンジニアに伝えるなら実行できるコードを添付して、その実行結果も詳細に計測してレポートする必要があります。ちゃんと10回とか100回とか実行して、その最小値、最大値、平均値などの値を計算して記入。

海外で付き合いのあるAppleScript系のプログラマにも話を通して、内容と傾向について確認を行います。

こうして資料とデータをそろえ、レポートにまとめてフィードバック・アシスタントから送信。これには、かなり古めのマシン(10年以上前のマシン)の実行結果との比較を添付し、

「あなたのところの最新鋭機種、10年前のローエンドへっぽこマシンの10倍以上遅いんですけど?(笑)」

と、レポート。

これだけでも相当に時間と手間がかかっているので、もっと大きな会社に勤めているエンジニアにこういうのをやってほしいところです。

Appleのエンジニアは「レポートする側が負担を負って当然」という態度ですし、最近とみにバグが多くなるし、いつも割り切れないものを感じています

吉報は、忘れたころにやってくる

レポートしたことをすっかり忘れてしまったころに、US Appleの担当者から連絡があり、macOS 12 Betaで対処したのでインストールして試してほしいとこのこと。……逆をいえば、macOS 11への修正は行われないということです。

試してみて、1発目か2発目ぐらいのアップデートは従来通りであったものの、3発目ぐらいで大幅に高速化

それまで、自分がさわった中では最速だったiMac Proよりも2倍以上高速だという結果が得られました。先の距離計算Scriptだと45秒ぐらいで実行できてしまいます。アクティビティ・モニタで確認しても、従来のEコアによる実行ではなく、確実にPコアで実行していることがわかります。

かくして、macOS 12においてAppleScriptの実行が低速化するバグが修正されたのでした。macOS 12では、リリース後にそれ以外のバグでさんざん苦しめられたので、いいこと半分、悪いこと半分みたいな印象でした。

電子書籍「AppleScript最新リファレンス v2.8対応」より引用

Appleにレポートしたパフォーマンス計測関連のScriptから、現状のmacOSにおけるAppleScriptの使い方を基礎から応用まで幅広くまとめた電子書籍「AppleScript最新リファレンスv2.8対応」を出しています。


この記事が気に入ったらサポートをしてみませんか?