Performance/Fenix
Performance can be thought in terms of "Offense" – the changes that you make to actively improve performance – and "Defense" – the systems you have in place to prevent performance regression's (this offense/defense idea from this blog post).
App start up
Defense
The FE perf team has the following measures in place to prevent regressions:
- Show long term start up trends with Nightly performance tests (note: these are not granular enough to practically identify & fix regressions)
- Prevent main thread IO with:
StrictMode
crashing in debug builds on disk or network IO on the main thread
- Code added to the start up path should be reviewed by the performance team:
- We are Code Owners for a few files
We're working on adding:
- Regression testing per master merge (issue)
- Prevent main thread IO with:
- Code added to the start-up path should be reviewed by the performance team:
- We're investigating other files that can be separated so we can be code owners for the start up parts (issue)
- Minimize component initialization with:
- Avoid unnecessary initialization (issue)
- Prevent unnecessarily expensive UI with:
- NestedConstraintLayout static analysis (issue)
Offense
TODO: improve this section, if useful (let us know if it is)
We're keeping a list of the biggest known performance improvements we can make. Also, we have a startup improvement plan.