FrontPage  ページ一覧  検索  更新履歴  RSS  ログイン

Clock

概要

可能な限り精度の高い時間情報を取得します。通常はCPUのクロック情報を参照します。誤差は環境に依存しますが最低でもmsecオーダー程度の精度は確保されています。ただし、表示のタイミングはflipに拘束されており、clockでflip間のオフセットは保障されていません。

メソッド

void update()
現在時刻(通常はCPUのプロセスタイム)を取得し保存します。
Clock operator -(Clock rhs)
Clock間でupdateした時刻の差分を返します。
int at_msec()
時間情報をミリ秒単位にして返します。通常Clockの差分に対して適用します。

使用例

ある処理にかかる時間を計測する場合、処理前と処理後に時間を取得し、その差分を見ます。

Clock A,B;
A.update();

  // 処理時間を計測したい処理

B.update();
double duration = (B-A).at_msec();

内部実装

それぞれのOS固有のコールを包んでいます。

Windows

QueryPerformanceCounter 関数を使用しています。この関数はBIOSにバグがある場合はマルチコアCPUではスレッドセーフではありませんが、Psychlopsは現状ユーザ自身がスレッドを複数立てない限りは単一のスレッドしか走りません。 http://msdn2.microsoft.com/en-us/library/ms644904(VS.85).aspx

Mac OS X

mach_absolute_time 関数を使用しています。この関数は「CPU時間ベースである」と定められています。 http://developer.apple.com/documentation/Performance/Conceptual/LaunchTime/Articles/MeasuringLaunch.html

更新日時:2010/04/11 13:58:06
キーワード:[Class]
参照:[リファレンスマニュアル]