| Index: tools/timer/SysTimer_mach.cpp
|
| diff --git a/tools/timer/SysTimer_mach.cpp b/tools/timer/SysTimer_mach.cpp
|
| index aca12dee5203afb2109aa47d6d7b8a23c183e129..9716988a04284d75f89fc51dd56dc63858fe9d56 100644
|
| --- a/tools/timer/SysTimer_mach.cpp
|
| +++ b/tools/timer/SysTimer_mach.cpp
|
| @@ -39,6 +39,16 @@ static double interval_in_ms(time_value_t start_clock, time_value_t end_clock) {
|
| return duration_clock;
|
| }
|
|
|
| +static double wall_interval_in_ms(uint64_t elapsed) {
|
| + mach_timebase_info_data_t sTimebaseInfo;
|
| + if (KERN_SUCCESS != mach_timebase_info(&sTimebaseInfo)) {
|
| + return 0;
|
| + } else {
|
| + uint64_t elapsedNano = elapsed * sTimebaseInfo.numer / sTimebaseInfo.denom;
|
| + return elapsedNano / 1000000.0;
|
| + }
|
| +}
|
| +
|
| void SysTimer::startWall() {
|
| fStartWall = mach_absolute_time();
|
| }
|
| @@ -54,13 +64,10 @@ double SysTimer::endCpu() {
|
|
|
| double SysTimer::endWall() {
|
| uint64_t end_wall = mach_absolute_time();
|
| + return wall_interval_in_ms(end_wall - fStartWall);
|
| +}
|
|
|
| - uint64_t elapsed = end_wall - fStartWall;
|
| - mach_timebase_info_data_t sTimebaseInfo;
|
| - if (KERN_SUCCESS != mach_timebase_info(&sTimebaseInfo)) {
|
| - return 0;
|
| - } else {
|
| - uint64_t elapsedNano = elapsed * sTimebaseInfo.numer / sTimebaseInfo.denom;
|
| - return elapsedNano / 1000000.0;
|
| - }
|
| +double GetTimeMs() {
|
| + static const uint64_t launchTime = mach_absolute_time();
|
| + return wall_interval_in_ms(mach_absolute_time() - launchTime);
|
| }
|
|
|