Numbersは、表からのデータ取得は高速なのに表にデータを設定するのが1000倍以上遅いという特徴を持っています。Numbersの表にデータを連続設定するのが、ある意味現行環境で一番重いAppleScriptのベンチマークと言われてしまうほどに。
そんな中、「ignoring application responses」句で囲って、非同期コマンド実行を行うと、Numbersでも100倍ぐらいの高速化が図れます。AppleScriptの処理系はすぐに解放されますが、Numbers側でコマンドをバッファリングして処理を継続します。
速くなりすぎなので、どこかに副作用があるのでは? と、かなり懐疑的な目で見ていましたが、どうやら危ないポイントが見えてきました。
5×5000セルを連続値で埋める、というテストを「ignoring application responses」つきで行なっていたところ、2万2000を超えたあたりでNumbersの表にデータが書き込まれなくなっていました。
▲10x 5,000のセルを選択して、連続値で埋める処理を非同期モードで実行した結果。この処理では、31,717まで実行したところで終わった
AppleEventのコマンドのバッファリングをアプリ側で行なっているような挙動だったのですが、このバッファに一定の上限があるという仮説を立てています。
ちょっとした処理を行うだけではこの「上限」に達することはないものと思われますが、Numbersに対してセルに値を連続かつ大量に設定するような場合には気をつけてください。
実施環境は、Numbers v14.2+macOS 15.2beta+MacBook Air M2(RAM 16GB)です。