Skip to content

Commit 390e91c

Browse files
authored
Use unix epoch timestamps (oblador#71)
1 parent 2b6b029 commit 390e91c

File tree

4 files changed

+22
-14
lines changed

4 files changed

+22
-14
lines changed

packages/react-native-performance/android/src/main/java/com/oblador/performance/PerformanceModule.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.oblador.performance;
22

3-
import android.os.SystemClock;
43
import androidx.annotation.NonNull;
54

65
import com.facebook.react.bridge.Arguments;
@@ -13,6 +12,7 @@
1312

1413
import java.util.HashMap;
1514
import java.util.Map;
15+
import java.lang.System;
1616

1717
public class PerformanceModule extends ReactContextBaseJavaModule {
1818
public static final String PERFORMANCE_MODULE = "RNPerformanceManager";
@@ -34,7 +34,7 @@ public static void setupListener() {
3434
switch (name) {
3535
case RELOAD:
3636
markBuffer.clear();
37-
markBuffer.put(BRIDGE_SETUP_START, SystemClock.uptimeMillis());
37+
markBuffer.put(BRIDGE_SETUP_START, System.currentTimeMillis());
3838
break;
3939
case ATTACH_MEASURED_ROOT_VIEWS_END:
4040
case ATTACH_MEASURED_ROOT_VIEWS_START:
@@ -67,7 +67,7 @@ public static void setupListener() {
6767
case SETUP_REACT_CONTEXT_END:
6868
case SETUP_REACT_CONTEXT_START:
6969
case VM_INIT:
70-
long startTime = SystemClock.uptimeMillis();
70+
long startTime = System.currentTimeMillis();
7171
markBuffer.put(getMarkName(name), startTime);
7272
break;
7373

@@ -143,7 +143,7 @@ private void emit(String eventName,
143143
long startTime) {
144144
WritableMap params = Arguments.createMap();
145145
params.putString("name", name);
146-
params.putInt("startTime", (int) startTime);
146+
params.putDouble("startTime", startTime);
147147
getReactApplicationContext()
148148
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
149149
.emit(eventName, params);

packages/react-native-performance/android/src/main/java/com/oblador/performance/StartTimeProvider.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import android.net.Uri;
77
import android.os.Build;
88
import android.os.Process;
9-
import android.os.SystemClock;
9+
import java.lang.System;
1010

1111
import androidx.annotation.NonNull;
1212
import androidx.annotation.Nullable;
@@ -41,7 +41,7 @@ private static void setStartTime() {
4141

4242
private static void setEndTime() {
4343
if (endTime == 0) {
44-
endTime = SystemClock.uptimeMillis();
44+
endTime = System.currentTimeMillis();
4545
}
4646
}
4747

packages/react-native-performance/ios/RNPerformanceManager.m

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
#import "RNPerformanceManager.h"
22
#import <sys/sysctl.h>
33
#include <math.h>
4+
#include <chrono>
45
#import <QuartzCore/QuartzCore.h>
56
#import <React/RCTRootView.h>
67
#import <React/RCTPerformanceLogger.h>
78

8-
static CFTimeInterval getProcessStartTime() {
9+
static CFTimeInterval getProcessStartTime()
10+
{
911
size_t len = 4;
1012
int mib[len];
1113
struct kinfo_proc kp;
@@ -19,6 +21,11 @@ static CFTimeInterval getProcessStartTime() {
1921
return startTime.tv_sec + startTime.tv_usec / 1e6;
2022
}
2123

24+
static int64_t getTimestamp()
25+
{
26+
return std::chrono::system_clock::now().time_since_epoch() / std::chrono::milliseconds(1);
27+
}
28+
2229
static int64_t sNativeLaunchStart;
2330
static int64_t sNativeLaunchEnd;
2431

@@ -32,9 +39,8 @@ @implementation RNPerformanceManager
3239
+ (void) initialize
3340
{
3441
[super initialize];
35-
CFTimeInterval absoluteTimeToRelativeTime = CACurrentMediaTime() - [NSDate date].timeIntervalSince1970;
36-
sNativeLaunchStart = (getProcessStartTime() + absoluteTimeToRelativeTime) * 1000;
37-
sNativeLaunchEnd = CACurrentMediaTime() * 1000;
42+
sNativeLaunchStart = (getProcessStartTime() - [NSDate date].timeIntervalSince1970) * 1000 + getTimestamp();
43+
sNativeLaunchEnd = getTimestamp();
3844
}
3945

4046
- (void)setBridge:(RCTBridge *)bridge
@@ -49,7 +55,7 @@ - (void)setBridge:(RCTBridge *)bridge
4955

5056
- (void)contentDidAppear
5157
{
52-
int64_t startTime = CACurrentMediaTime() * 1000;
58+
int64_t startTime = getTimestamp();
5359
[self emitMarkNamed:@"nativeLaunchStart" withStartTime:sNativeLaunchStart];
5460
[self emitMarkNamed:@"nativeLaunchEnd" withStartTime:sNativeLaunchEnd];
5561
[self emitTag:RCTPLScriptDownload withNamePrefix:@"download"];
@@ -66,6 +72,7 @@ - (void)contentDidAppear
6672

6773
- (void)invalidate
6874
{
75+
[super invalidate];
6976
NSNotificationCenter *notificationCenter = NSNotificationCenter.defaultCenter;
7077
[notificationCenter removeObserver:self];
7178
}
@@ -88,6 +95,7 @@ - (void)emitTag:(RCTPLTag)tag withNamePrefix:(NSString *)namePrefix
8895
NSLog(@"Ignoring marks prefixed %@ (%lu) as data is unavailable (duration: %lld, end: %lld)", namePrefix, (unsigned long)tag, duration, end);
8996
return;
9097
}
98+
end += getTimestamp() - (CACurrentMediaTime() * 1000);
9199
[self emitMarkNamed:[namePrefix stringByAppendingString:@"Start"] withStartTime:end-duration];
92100
[self emitMarkNamed:[namePrefix stringByAppendingString:@"End"] withStartTime:end];
93101
}
@@ -107,7 +115,7 @@ - (void)emitMetricNamed:(NSString *)name withValue:(NSNumber *)value
107115
if (hasListeners) {
108116
[self sendEventWithName:@"metric" body:@{
109117
@"name": name,
110-
@"startTime": @(CACurrentMediaTime() * 1000),
118+
@"startTime": @(getTimestamp()),
111119
@"value": value
112120
}];
113121
}

packages/react-native-performance/ios/react-native-performance.podspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ Pod::Spec.new do |s|
1111
s.license = package['license']
1212
s.source = { :git => 'https://github.com/oblador/react-native-performance.git', :tag => "v#{s.version}" }
1313

14-
s.platform = :ios, "9.0"
15-
s.source_files = "**/*.{h,m}"
14+
s.platform = :ios, "11.0"
15+
s.source_files = "**/*.{h,m,mm}"
1616

1717
s.dependency 'React-Core'
1818
end

0 commit comments

Comments
 (0)