2010-12-18T13:56:16+09:00
length vs count -- AppleScript リストの要素数の取得を速くする
AppleScript のリストの要素の数の取得には、リストの length プロパティと count コマンドが使える。どっちを使っても同じ答えが得られるのだけど、どっちが速いのか?というのは、興味が有るところじゃない?
というわけで、LapTime.osax を使って調べてみました。
最初に結論から言ってしまうと、length より count の方が少しだけ速い傾向にある。でも、そんなに劇的に差がある訳じゃない。それより、大事なことはリストに直接アクセスするのではなく、リストの参照を経由して要素数を取得すると劇的に速くなります。上のサンプルの場合は 1000 倍ぐらい速くなります。上のサンプルでは、リファレンス経由でアクセする為にリストをスクリプトオブジェクトのプロパティに設定し、スクリプトオブジェクト経由でリストにアクセスしています。
要素の取得に関しては、リファレンス経由でリストにアクセスした方が高速であることは、「AppleScript で高速データ処理」で詳しく解説しました。要素の取得だけでなく、数を勘定するときもリファレンス経由でする方がいいのですね。
このような、細かいノウハウを気にしながらコードを書くのは厄介な物です。まとまったリスト処理を行いたいときは、AppleScript モジュール XList の使用を強く推奨します。XList には、このようなノウハウが凝縮されています。