2010-10-12T17:58:45+09:00

LapTime.osax 1.0b1

AppleScript でスクリプトの実行速度を測定を行うスクリプティング機能追加です。スクリプトの性能測定やチューンアップに利用できます。

そんな時間測定の目的には、current date で現在時間を取得して・・・ということを考えるかもしれないけど、current date で取得できる時間の最小単位は秒だから、ちょっと時間が粗すぎるんだよね。ちょっと前は、GetMilliSec.osax を愛用していたけど、Intel Mac になったら使えなくなっちゃた。

というわけで、LapTime.osax を作りました。gettimeofday というAPI を使用してマイクロ秒の単位で時間を取得しています。でも、現実的にはそこまでの精度は意味がなくて、OSAX 呼び出しなどのロスなどでミリ秒のオーダーでしか意味がないと思う。というわけで、LapTime.osax のコマンドから帰ってくる数値の単位は、全部ミリ秒です。

まだ、マニュアルは書いていないし、作りも粗いところがあるし、使い込んでいないのでβ版ということにします。何か問題とか、ご要望があったら連絡ちょうだい。

使い方は、次のサンプルコードで分かるでしょう?start timer コマンドで、timer オブジェクトを生成します。stop timer コマンドで、start timer からの時間をミリ秒の単位で返します。

lap time コマンドを使うと途中経過までの時間の測定を行えます。lap time コマンドを使う場合は、ログは表示しないようにしよう。lap time コマンド結果のログ表示にも時間がかかっちゃうからね。lap time コマンドが置かれた位置での経過時間は、time record of コマンドで最後にまとめて取得してね。

(* simple usage *)
set tm to (start timer)
delay 0.1
log (stop timer tm)
(*102.56103515625*)

(* obtain lap times *)
set tm to (start timer)
delay 0.01
lap time tm
delay 0.03
lap time tm
log (time records of tm)
(*class:time records,
lap times:10.822998046875, 33.030029296875, 0.510009765625,
total times:44.363037109375*)