Use CLOCK_MONOTONIC instead of CLOCK_MONOTONIC_RAW in performanceNow
Reviewed By: AaaChiuuu Differential Revision: D4688909 fbshipit-source-id: 30d02ea6af4cce47bcd4fe41bc1f048dccbb3b2b
This commit is contained in:
parent
acb9fa8f66
commit
434ca242ec
|
@ -73,9 +73,15 @@ static JSValueRef nativePerformanceNow(
|
||||||
static const int64_t NANOSECONDS_IN_SECOND = 1000000000LL;
|
static const int64_t NANOSECONDS_IN_SECOND = 1000000000LL;
|
||||||
static const int64_t NANOSECONDS_IN_MILLISECOND = 1000000LL;
|
static const int64_t NANOSECONDS_IN_MILLISECOND = 1000000LL;
|
||||||
|
|
||||||
// This is equivalent to android.os.SystemClock.elapsedRealtime() in native
|
// Since SystemClock.uptimeMillis() is commonly used for performance measurement in Java
|
||||||
|
// and uptimeMillis() internally uses clock_gettime(CLOCK_MONOTONIC),
|
||||||
|
// we use the same API here.
|
||||||
|
// We need that to make sure we use the same time system on both JS and Java sides.
|
||||||
|
// Links to the source code:
|
||||||
|
// https://android.googlesource.com/platform/frameworks/native/+/jb-mr1-release/libs/utils/SystemClock.cpp
|
||||||
|
// https://android.googlesource.com/platform/system/core/+/master/libutils/Timers.cpp
|
||||||
struct timespec now;
|
struct timespec now;
|
||||||
clock_gettime(CLOCK_MONOTONIC_RAW, &now);
|
clock_gettime(CLOCK_MONOTONIC, &now);
|
||||||
int64_t nano = now.tv_sec * NANOSECONDS_IN_SECOND + now.tv_nsec;
|
int64_t nano = now.tv_sec * NANOSECONDS_IN_SECOND + now.tv_nsec;
|
||||||
return Value::makeNumber(ctx, (nano / (double)NANOSECONDS_IN_MILLISECOND));
|
return Value::makeNumber(ctx, (nano / (double)NANOSECONDS_IN_MILLISECOND));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue