1
0
Fork 0

For #7820: warm BrowsersCache on background thread.

In an early iteration of his patch on a beta build, I saw no improvement over
6 runs (Pixel 2):
- Before: 401.5ms
- After: 402.17ms

This may be attributed to noise in startup performance. However,
BrowsersCache disappears from profiles completely and results in
theoretical performance gains.

When using the StartupTimeline class (not landed yet), I see a 27.75ms
runtime improvement on beta builds after this patch.
master
Michael Comella 2020-01-20 18:19:10 -08:00 committed by Jeff Boek
parent a42ad7603b
commit a896b47cfe
1 changed files with 10 additions and 0 deletions

View File

@ -37,6 +37,7 @@ import org.mozilla.fenix.components.Components
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.session.NotificationSessionObserver
import org.mozilla.fenix.session.VisibilityLifecycleCallback
import org.mozilla.fenix.utils.BrowsersCache
@SuppressLint("Registered")
@Suppress("TooManyFunctions")
@ -104,6 +105,7 @@ open class FenixApplication : LocaleAwareApplication() {
setDayNightTheme()
enableStrictMode()
warmBrowsersCache()
// Enable the service-experiments component
if (settings().isExperimentationEnabled && Config.channel.isReleaseOrBeta) {
@ -260,6 +262,14 @@ open class FenixApplication : LocaleAwareApplication() {
}
}
private fun warmBrowsersCache() {
// We avoid blocking the main thread for BrowsersCache on startup by loading it on
// background thread.
GlobalScope.launch(Dispatchers.Default) {
BrowsersCache.all(this@FenixApplication)
}
}
private fun enableStrictMode() {
if (Config.channel.isDebug) {
StrictMode.setThreadPolicy(