[ Home | Programming Tips | Mail ]

Elapsed Time


高精度時間測定

 Macintoshで高精度に経過時間を測定するのには TickCount()(1/60秒 Timer)を使うのが昔からの方法ですが、大昔のマシン速度に比べ 100倍以上高速化した現状では全く精度が足りません。

 Microseconds()は Time Managerと同程度の約 20μ秒の精度があります。68K Macでは充分な精度ですが、PowerMacでは Microseconds()自体 68K Emulationで動くこともあって overheadが大きく充分な精度も期待できません。

 PowerPC Processorには時間測定に使う registerが用意されていますが、Processorの種類で機構が異なるため全ての(特に今後の)PowerPC Processorで正しく動く方法を実装するのは至難の技です。

 そこで私は Open Transportに用意されている Time Stamp Utility OTGetTimeStamp()を利用しています。これには次の利点があります。

 高精度時間測定用の CElapsedTime classを作りました。
 実際の codeはこちらから落せます。
ElapsedTime.hqx


この Pageは MacOS X + Radio UserLand で作っています。