Skip to content

Defer loading non-essential components

Denys Mishunov requested to merge 268225-defer0-components into master

What does this MR do?

This MR defers loading most of the non-essential components for an initial load of WebIDE for the ~performance sake.

What is the performance gain here?

Here are the results of running the tests against master and this branch. The tests were run with local GDK installation in development mode. The development env doesn't matter much in this case as we care about the comparison to master in the same env and not the absolute numbers. The measurements are taken with User Timing API marks.

WebIDE: repo

BEFORE:
Run 1 Run 2 Run 3 Run 4 Run 5 Average
webide-app-start 3577 2290 1160 1210 1065 1860.4
webide-tree-start 4698 3084 2003 1945 1760 2698
file-tree-start 8315 5785 4052 3781 3981 5182.8
webide-tree-finished 8580 6064 4279 4084 4290 5459.4
file-tree-end 8580 6064 4279 4084 4290 5459.4

AFTER:
Run 1 Run 2 Run 3 Run 4 Run 5 Average
webide-app-start 2728 1302 1087 1041 893 1410.2
webide-tree-start 3481 2157 1903 1657 1606 2160.8
file-tree-start 5353 3903 3631 3490 3505 3976.4
webide-tree-finished 5641 4233 3981 3758 3837 4290
file-tree-end 5641 4233 3981 3758 3837 4290

Comparison (average)

Before After Difference Mark explanation
webide-app-start 1860.4 1410.2 -450.2 Start of the WebIDE Vue application
webide-tree-start 2698 2160.8 -537.2 Start of the navigation tree rendering
file-tree-start 5182.8 3976.4 -1206.4 Start of the very first file/folder entry in the tree
webide-tree-finished 5459.4 4290 -1169.4 Finish of the navigation tree rendering
file-tree-end 5459.4 4290 -1169.4 Finished rendering the very first file/folder entry in the tree

WebIDE: file in a repo

BEFORE:
Run 1 Run 2 Run 3 Run 4 Run 5 Average
webide-app-start 2930 1513 1068 1518 1093 1624.4
webide-tree-start 3773 2156 1713 2159 1786 2317.4
repo-editor-start 6080 4406 3836 4333 3648 4460.6
webide-file-start 6107 4430 3853 4354 3671 4483
repo-editor-end 6108 4430 3853 4354 3671 4483.2
file-tree-start 6149 4480 3903 4408 3723 4532.6
webide-tree-finished 6442 4771 4202 4720 3996 4826.2
file-tree-end 6442 4771 4202 4720 3996 4826.2
webide-file-finished 7217 5337 4741 5261 4785 5468.2

AFTER:
Run 1 Run 2 Run 3 Run 4 Run 5 Average
webide-app-start 3030 1490 1189 1012 942 1532.6
webide-tree-start 3613 2037 1910 1832 1721 2222.6
repo-editor-start 5396 3884 3529 3616 3359 3956.8
webide-file-start 5412 3900 3536 3623 3367 3967.6
repo-editor-end 5412 3900 3536 3623 3367 3967.6
file-tree-start 5549 4003 3638 3735 3472 4079.4
webide-tree-finished 5953 4340 3952 4081 3824 4430
file-tree-end 5953 4340 3952 4081 3824 4430
webide-file-finished 6613 4856 4454 4593 4318 4966.8

Comparison (average)

Before After Difference Mark explanation
webide-app-start 1624.4 1532.6 -91.8 Start of the WebIDE Vue application
webide-tree-start 2317.4 2222.6 -94.8 Start of the navigation tree rendering
webide-file-start 4483 3967.6 -515.4 Start of the requested file's rendering
file-tree-start 4532.6 4079.4 -453.2 Start of the very first file/folder entry in the tree
webide-tree-finished 4826.2 4430 -396.2 Finish of the navigation tree rendering
file-tree-end 4826.2 4430 -396.2 Finished rendering the very first file/folder entry in the tree
webide-file-finished 5468.2 4966.8 -501.4 Finish of the requested file's rendering

Screenshots (strongly suggested)

No visual change

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Related to #268225 (closed)

Edited by Denys Mishunov

Merge request reports