android_webview: measure startup time with uptimeMillis().
elapsedRealtime() includes system sleep time; this can make the
measurements noisy since we can't be doing any startup while the CPU is
asleep. Use uptimeMillis instead as this doesn't count sleep.
Bug: 1204623
Change-Id: Id7be8674238bd50364e54efd7c67b67b22ce8e5d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2860307
Auto-Submit: Richard Coles <torne@chromium.org>
Reviewed-by: Mugdha Lakhani <nator@chromium.org>
Commit-Queue: Mugdha Lakhani <nator@chromium.org>
Cr-Commit-Position: refs/heads/master@{#878142}
NOKEYCHECK=True
GitOrigin-RevId: da3bb54157d4603b9c820d6cfdf61859f804dfb2
diff --git a/java/src/com/android/webview/chromium/WebViewChromium.java b/java/src/com/android/webview/chromium/WebViewChromium.java
index fff24ff..9222e72 100644
--- a/java/src/com/android/webview/chromium/WebViewChromium.java
+++ b/java/src/com/android/webview/chromium/WebViewChromium.java
@@ -276,7 +276,7 @@
// so is ignored. TODO: remove it from WebViewProvider.
public void init(final Map<String, Object> javaScriptInterfaces,
final boolean privateBrowsing) {
- long startTime = SystemClock.elapsedRealtime();
+ long startTime = SystemClock.uptimeMillis();
boolean isFirstWebViewInit = !mFactory.hasStarted();
try (ScopedSysTraceEvent e1 = ScopedSysTraceEvent.scoped("WebViewChromium.init")) {
if (privateBrowsing) {
@@ -380,11 +380,11 @@
if (isFirstWebViewInit) {
RecordHistogram.recordTimesHistogram(
"Android.WebView.Startup.CreationTime.Stage2.ProviderInit.Cold",
- SystemClock.elapsedRealtime() - startTime);
+ SystemClock.uptimeMillis() - startTime);
} else {
RecordHistogram.recordTimesHistogram(
"Android.WebView.Startup.CreationTime.Stage2.ProviderInit.Warm",
- SystemClock.elapsedRealtime() - startTime);
+ SystemClock.uptimeMillis() - startTime);
}
}
}
diff --git a/java/src/com/android/webview/chromium/WebViewChromiumAwInit.java b/java/src/com/android/webview/chromium/WebViewChromiumAwInit.java
index a212c9b..cbe8278 100644
--- a/java/src/com/android/webview/chromium/WebViewChromiumAwInit.java
+++ b/java/src/com/android/webview/chromium/WebViewChromiumAwInit.java
@@ -144,7 +144,7 @@
private static final int DIR_RESOURCE_PAKS_ANDROID = 3003;
protected void startChromiumLocked() {
- long startTime = SystemClock.elapsedRealtime();
+ long startTime = SystemClock.uptimeMillis();
try (ScopedSysTraceEvent event =
ScopedSysTraceEvent.scoped("WebViewChromiumAwInit.startChromiumLocked")) {
assert Thread.holdsLock(mLock) && ThreadUtils.runningOnUiThread();
@@ -238,7 +238,7 @@
}
RecordHistogram.recordTimesHistogram(
"Android.WebView.Startup.CreationTime.StartChromiumLocked",
- SystemClock.elapsedRealtime() - startTime);
+ SystemClock.uptimeMillis() - startTime);
}
/**
diff --git a/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java b/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
index 495ebe0..ed2f553 100644
--- a/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
+++ b/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
@@ -247,7 +247,7 @@
@SuppressWarnings("NoContextGetApplicationContext")
private void initialize(WebViewDelegate webViewDelegate) {
- long startTime = SystemClock.elapsedRealtime();
+ long startTime = SystemClock.uptimeMillis();
try (ScopedSysTraceEvent e1 =
ScopedSysTraceEvent.scoped("WebViewChromiumFactoryProvider.initialize")) {
PackageInfo packageInfo;
@@ -410,14 +410,14 @@
RecordHistogram.recordTimesHistogram(
"Android.WebView.Startup.CreationTime.Stage1.FactoryInit",
- SystemClock.elapsedRealtime() - startTime);
+ SystemClock.uptimeMillis() - startTime);
if (BuildInfo.isAtLeastS()) {
// TODO: Use the framework constants as indices in timestamps array.
startTime = mWebViewDelegate.getTimestamps()[0];
RecordHistogram.recordTimesHistogram(
"Android.WebView.Startup.CreationTime.TotalFactoryInitTime",
- SystemClock.elapsedRealtime() - startTime);
+ SystemClock.uptimeMillis() - startTime);
}
}