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); |
} |