FY22-Q2 Create: Code Review: Improve rendering performance of Large MR: 40% faster, 65% less memory usage (Draft) => 69.5%
_(TBD: Specify UX guard rails)_
The performance of large merge requests on GitLab.com is a common problem that has been surfaced in various areas like SUS surveys and Hacker News.
For this objective, we will need to:
- [x] [Define "Large MR"](https://gitlab.com/gitlab-org/gitlab/-/issues/327128)
- [x] Provide stable and automated metrics associated with a dashboard measure success
- [ ] Identify and implement performance improvements as it relates to response/load times and usability
### Resources and previous data
- [<abbr title="System Usability Scale">SUS</abbr> slide deck](https://docs.google.com/presentation/d/1kMZcRnOjuQ0K3TtT1YxedhFb5-Ej_cr2mXxeeJ9sbZ0/edit#slide=id.ga943e54df8_0_157)
- [NPS (Net Promoter Score) report](https://docs.google.com/presentation/d/1BYh0gg8ogmmW8_hwmvi30Yr3Wh5aIXEa_M8RHrQ5ciw/edit#slide=id.g816b061b2f_0_33)
- MR size and performance research synthesis: [slide deck](https://docs.google.com/presentation/d/13i_aagzPLusuVCx_jOVYPCyT1SSx__0OAt6cSHmWRdQ/edit?usp=sharing) and [summary video](https://youtu.be/Rd8aVDJIHGs)
### Related links
- https://gitlab.com/gitlab-data/analytics/-/issues/8486
- https://gitlab.com/gitlab-org/gitlab/-/issues/327128
- https://gitlab.com/groups/gitlab-org/-/epics/422
### Related goals
- [Product OKR's for Q2-FY22](https://gitlab.com/gitlab-com/Product/-/issues/2376)
- [UX KR for Q2-FY22: Focus on negative SUS theme related to merge requests](https://gitlab.com/gitlab-com/www-gitlab-com/-/issues/11204)
### Issue Tracking
Issues in support of this effort are identified with ~"OKR FY22 Q2::Large MR". They can be tracked [at this link](https://gitlab.com/gitlab-org/gitlab/-/issues?scope=all&utf8=%E2%9C%93&state=opened&label_name[]=OKR%20FY22%20Q2%3A%3ALarge%20MR).
## Baseline
Scoring / % Complete on this KR will be based on how we have met our goal of 40% faster and 65% less memory usage.
Data for the Large MR running in the 10k reference architecture can be found here: https://gitlab.com/gitlab-org/quality/performance/-/wikis/Benchmarks/SiteSpeed/10k
The initial metrics we are looking at are Fully Loaded times for speed and JSHeapUsed for memory usage.
### Baseline
| Page | Fully Loaded | JSHeapUsed |
| ------ | ------ | ------ |
| [Discussions](https://gitlab-org.gitlab.io/-/quality/performance-sitespeed/-/jobs/1294861983/artifacts/results/pages/10k_testbed_gitlab_net/web_project_merge_request_discussions/index.html) | 25.349s | 96,558,844 |
| [Commits](https://gitlab-org.gitlab.io/-/quality/performance-sitespeed/-/jobs/1294861983/artifacts/results/pages/10k_testbed_gitlab_net/web_project_merge_request_commits/index.html) | 4.752 s | 13,767,100 |
| [Changes](https://gitlab-org.gitlab.io/-/quality/performance-sitespeed/-/jobs/1294861983/artifacts/results/pages/10k_testbed_gitlab_net/web_project_merge_request_changes/index.html) | 31.712 s | 443,139,016 |
### Goals
| Page | Fully Loaded | JSHeapUsed |
| ----------- | ------------ | ----------- |
| Discussions | 15.209s | 33,795,595 |
| Commits | 2.851s | 4,818,485 |
| Changes | 19.027s | 155,098,655 |
### Results
# Faster (LCP)
| Page | LCP Improvement |
|------|-----------------|
| discussion | {-+2.34%-} |
| commits | {+-4.77%+} |
| changes | {+-53.31%+} |
* **Weighted average of improvements:** {+-26.76%+}
* **Progress towards goal of 40%:** {+66.89%+}
# Memory improvements
| Page | Memory Improvement |
|------|--------------------|
| discussion | {+-2.70%+} |
| commits | {+-8.44%+} |
| changes | {+-80.77%+} |
* **Weighted average of improvements:** {+-43.19%+}
* **Progress towards goal of 60%:** {+71.99%+}
# Total OKR score
* Faster: 27% of 40% => 67%
* Memory: 43% of 60% => 72%
* **Final score: 69.5%**
epic