2020-02-12T20:35:15+09:00

LapTime 2.0 : AppleScript の実行時間をミリ秒の精度で測定する AppleScript ライブラリ

LapTime は、AppleScript の実行時間を測定する AppleScript ライブラリです。スクリプトの性能の評価と改善に役立ちます。

かつて、同じ目的でスクリプティング機能追加 LapTime.osax を開発しましたが、macOS 10.14 Mojave からスクリプティング機能追加が動作しなくなったので、AppleScript ライブラリとして作り直しました。

AppleScript の実行時間の測定方法として、標準に装備されている curren date が使うことが考えられますが、時間分解能が 1 秒です。精度が悪すぎてスクリプトの性能評価には不向きです。LapTime は Cocoa の NSDate を使うことにより、ミリ秒オーダーの精度で時間を測ります。

一番簡単には、start_timerduration メソッド を使うことです。start_timer は 新しい LapTime のインスタスを生成します。その LapTime インスタンスの duragion メソッドで、start_timer からの経過時間を得ることができます。

スクリプトの各部分の実行の所要時間を測定するには、lap メソッドと lap_times メソッドを使います。lap は、start_timer で生成した LapTime インスタンスに呼ばれた時間を記録します。

ある処理の所要時間の正確な所要時間の評価のためには、lapaverage メソッドを使います。repeat 文で特定の処理を何回も実行します。実行の度に lap メソッドで経過時間を記録します。average メソッドで lap メソッド間の実行時間の平均を計算し出力します。

use LapTime : script "LapTime"

(*== Simple Usage ==*)
set tm to LapTime's start_timer()
delay 0.15
tm's duration() -- time from call of start_time
(*151.413917541504 [ms]*)

(*== Measure required times of parts of a script ==*)
set tm to LapTime's start_timer()
tm's lap() -- record the timming
delay 0.1
tm's lap()
delay 0.2
tm's lap()
tm's lap_times() -- pretty print elapsed times between calls of lap()
(*[Lap Times]
0.115990638733 [ms]
100.725054740906 [ms]
201.471924781799 [ms]*)

(*== Take an average of lap times to evaluate precise required time ==*)
set tm to LapTime's start_timer()
repeat 100 times
delay 0.01
tm's lap()
end repeat
tm's average()
(*[Average Time of Laps]
11.234790086746 [ms]*)