TickCount()
イベント間の時間差または特定のコードの実行に必要な時間を決定するために使用しています。ただし、 OSX10.8では非推奨です。したがって、私は同じものの代替が必要でした。
2 に答える
絶対時間を測定したい場合は、 を使用します
gettimeofday()
。これにより、「Thu Nov 22 07:48:52 UTC 2012」などの日付が得られます。これは、イベント間の差を測定するのに常に適しているとは限りませんgettimeofday()
。ユーザーがクロックを変更すると、 によって報告される時間が前後にジャンプする可能性があるためです。相対時間を計測したい場合は、
mach_absolute_time()
. これにより、「15.410 s」など、2 つのイベントの差を測定できます。これは絶対時間を与えませんが、常に単調です。CPU 時間を測定する場合は、 を使用します
clock()
。これは、多くの場合、コード片のパフォーマンスを測定する方法ではありませんが、常にではありません。IO に費やされた時間やシステム速度への影響はカウントされないため、CPU バウンドを測定していることがわかっている場合にのみ使用してください。
TickCount()
以前に非推奨にならなかったことに驚いています。それは本当にOS 9以前のものです。
この API は新しい開発には適していない可能性がありますが、同じ API が必要な場合は、次のように再実装できます。
uint32_t TickCount() {
uint64_t mat = mach_absolute_time();
uint32_t mul = 0x80d9594e;
return ((((0xffffffff & mat) * mul) >> 32) + (mat >> 32) * mul) >> 23;
}
上記の実装は の分析を通じて作成され、 によって返されるレジスタを変更することにより、非推奨の LLDB/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
に対して簡単に単体テストされました。TickCount
mach_absolute_time