Clock
概要
可能な限り精度の高い時間情報を取得します。通常はCPUのクロック情報を参照します。誤差は環境に依存しますが最低でもmsecオーダー程度の精度は確保されています。ただし、表示のタイミングはflipに拘束されており、clockでflip間のオフセットは保障されていません。
使用例
ある処理にかかる時間を計測する場合、処理前と処理後に時間を取得し、その差分を見ます。
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
キーワード:[Class]
参照:[リファレンスマニュアル]