perf(editor): reduce long-document decoration work and fix fold navigation

This commit is contained in:
2026-09-06 14:30:56 +08:00
parent 750e17212e
commit 874e916106
23 changed files with 9398 additions and 54 deletions
@@ -0,0 +1,380 @@
[
{
"requestedHan": 25000,
"hanCharacters": 25632,
"sourceCharacters": 35728,
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/152.0.0.0 Safari/537.36",
"viewport": [
1424,
905
],
"openMs": 379.09999999403954,
"domNodes": 2110,
"selectionMs": {
"median": 0.4000000059604645,
"p95": 0.7000000178813934,
"max": 1.300000011920929
},
"insertMs": {
"median": 6.300000011920929,
"p95": 9.599999994039536,
"max": 10.400000005960464
},
"foldMs": {
"median": 42.900000005960464,
"p95": 45.599999994039536,
"max": 45.599999994039536
},
"integrity": true,
"previewMs": [
176.30000001192093,
22.69999998807907,
19.80000001192093
],
"previewNodes": 1058,
"longTasks": {
"count": 4,
"median": 91,
"p95": 359,
"max": 359
},
"heapUsedBytes": 36560189,
"repeat": 1
},
{
"requestedHan": 25000,
"hanCharacters": 25632,
"sourceCharacters": 35728,
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/152.0.0.0 Safari/537.36",
"viewport": [
1424,
905
],
"openMs": 218.59999999403954,
"domNodes": 2110,
"selectionMs": {
"median": 0.29999998211860657,
"p95": 0.5,
"max": 0.5
},
"insertMs": {
"median": 4.799999982118607,
"p95": 6.9000000059604645,
"max": 7.699999988079071
},
"foldMs": {
"median": 45.30000001192093,
"p95": 79,
"max": 79
},
"integrity": true,
"previewMs": [
112.90000000596046,
27.80000001192093,
25.399999976158142
],
"previewNodes": 1058,
"longTasks": {
"count": 5,
"median": 65,
"p95": 198,
"max": 198
},
"heapUsedBytes": 78394355,
"repeat": 2
},
{
"requestedHan": 25000,
"hanCharacters": 25632,
"sourceCharacters": 35728,
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/152.0.0.0 Safari/537.36",
"viewport": [
1424,
905
],
"openMs": 207.59999999403954,
"domNodes": 2110,
"selectionMs": {
"median": 0.4000000059604645,
"p95": 0.5999999940395355,
"max": 0.699999988079071
},
"insertMs": {
"median": 4.600000023841858,
"p95": 5.9000000059604645,
"max": 6.800000011920929
},
"foldMs": {
"median": 35.900000005960464,
"p95": 45.400000005960464,
"max": 45.400000005960464
},
"integrity": true,
"previewMs": [
98.30000001192093,
29.69999998807907,
29.80000001192093
],
"previewNodes": 1058,
"longTasks": {
"count": 4,
"median": 59,
"p95": 184,
"max": 184
},
"heapUsedBytes": 72765231,
"repeat": 3
},
{
"requestedHan": 60000,
"hanCharacters": 61172,
"sourceCharacters": 85716,
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/152.0.0.0 Safari/537.36",
"viewport": [
1424,
905
],
"openMs": 394.30000001192093,
"domNodes": 4720,
"selectionMs": {
"median": 0.4000000059604645,
"p95": 0.6000000238418579,
"max": 0.699999988079071
},
"insertMs": {
"median": 6.300000011920929,
"p95": 7.799999982118607,
"max": 13.599999994039536
},
"foldMs": {
"median": 95.80000001192093,
"p95": 145.5,
"max": 145.5
},
"integrity": true,
"previewMs": [
180.59999999403954,
61.20000001788139,
50
],
"previewNodes": 2560,
"longTasks": {
"count": 10,
"median": 103,
"p95": 358,
"max": 358
},
"heapUsedBytes": 73234300,
"repeat": 1
},
{
"requestedHan": 60000,
"hanCharacters": 61172,
"sourceCharacters": 85716,
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/152.0.0.0 Safari/537.36",
"viewport": [
1424,
905
],
"openMs": 447.5,
"domNodes": 4720,
"selectionMs": {
"median": 0.4000000059604645,
"p95": 0.5999999940395355,
"max": 0.5999999940395355
},
"insertMs": {
"median": 6.699999988079071,
"p95": 12.699999988079071,
"max": 14.5
},
"foldMs": {
"median": 99.5,
"p95": 110.40000000596046,
"max": 110.40000000596046
},
"integrity": true,
"previewMs": [
153,
44.900000005960464,
49.400000005960464
],
"previewNodes": 2560,
"longTasks": {
"count": 9,
"median": 113,
"p95": 410,
"max": 410
},
"heapUsedBytes": 97026266,
"repeat": 2
},
{
"requestedHan": 60000,
"hanCharacters": 61172,
"sourceCharacters": 85716,
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/152.0.0.0 Safari/537.36",
"viewport": [
1424,
905
],
"openMs": 492.69999998807907,
"domNodes": 4720,
"selectionMs": {
"median": 0.5,
"p95": 0.6000000238418579,
"max": 1
},
"insertMs": {
"median": 7.199999988079071,
"p95": 9.599999994039536,
"max": 10.100000023841858
},
"foldMs": {
"median": 115.80000001192093,
"p95": 149.7000000178814,
"max": 149.7000000178814
},
"integrity": true,
"previewMs": [
141.39999997615814,
67.5,
61.900000005960464
],
"previewNodes": 2560,
"longTasks": {
"count": 11,
"median": 109,
"p95": 445,
"max": 445
},
"heapUsedBytes": 88746335,
"repeat": 3
},
{
"requestedHan": 120000,
"hanCharacters": 122322,
"sourceCharacters": 171613,
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/152.0.0.0 Safari/537.36",
"viewport": [
1424,
905
],
"openMs": 893.4000000059605,
"domNodes": 9139,
"selectionMs": {
"median": 0.7000000178813934,
"p95": 1.2000000178813934,
"max": 2.399999976158142
},
"insertMs": {
"median": 18,
"p95": 28.900000005960464,
"max": 31.5
},
"foldMs": {
"median": 217,
"p95": 292.90000000596046,
"max": 292.90000000596046
},
"integrity": true,
"previewMs": [
203.10000002384186,
98.7999999821186,
92.30000001192093
],
"previewNodes": 5117,
"longTasks": {
"count": 13,
"median": 199,
"p95": 796,
"max": 796
},
"heapUsedBytes": 113890741,
"repeat": 1
},
{
"requestedHan": 120000,
"hanCharacters": 122322,
"sourceCharacters": 171613,
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/152.0.0.0 Safari/537.36",
"viewport": [
1424,
905
],
"openMs": 869.0999999940395,
"domNodes": 9139,
"selectionMs": {
"median": 0.7000000178813934,
"p95": 1.300000011920929,
"max": 3.4000000059604645
},
"insertMs": {
"median": 16.69999998807907,
"p95": 22.599999994039536,
"max": 22.80000001192093
},
"foldMs": {
"median": 220.5,
"p95": 263.09999999403954,
"max": 263.09999999403954
},
"integrity": true,
"previewMs": [
207.39999997615814,
98.7000000178814,
90.2999999821186
],
"previewNodes": 5117,
"longTasks": {
"count": 14,
"median": 205,
"p95": 780,
"max": 780
},
"heapUsedBytes": 125636820,
"repeat": 2
},
{
"requestedHan": 120000,
"hanCharacters": 122322,
"sourceCharacters": 171613,
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/152.0.0.0 Safari/537.36",
"viewport": [
1424,
905
],
"openMs": 845.9000000059605,
"domNodes": 9139,
"selectionMs": {
"median": 0.699999988079071,
"p95": 1.0999999940395355,
"max": 2.9000000059604645
},
"insertMs": {
"median": 18.69999998807907,
"p95": 27.19999998807907,
"max": 35
},
"foldMs": {
"median": 205.7000000178814,
"p95": 263.90000000596046,
"max": 263.90000000596046
},
"integrity": true,
"previewMs": [
213.09999999403954,
100,
91.5
],
"previewNodes": 5117,
"longTasks": {
"count": 13,
"median": 191,
"p95": 768,
"max": 768
},
"heapUsedBytes": 86940861,
"repeat": 3
}
]
@@ -0,0 +1,380 @@
[
{
"requestedHan": 25000,
"hanCharacters": 25632,
"sourceCharacters": 35728,
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/152.0.0.0 Safari/537.36",
"viewport": [
1424,
905
],
"openMs": 398,
"domNodes": 2110,
"selectionMs": {
"median": 1.0999999940395355,
"p95": 1.9000000059604645,
"max": 1.9000000059604645
},
"insertMs": {
"median": 5.300000011920929,
"p95": 8.100000023841858,
"max": 8.800000011920929
},
"foldMs": {
"median": 58.70000001788139,
"p95": 70.19999998807907,
"max": 70.19999998807907
},
"integrity": true,
"previewMs": [
230.7999999821186,
45.5,
39.70000001788139
],
"previewNodes": 1058,
"longTasks": {
"count": 5,
"median": 84,
"p95": 372,
"max": 372
},
"heapUsedBytes": 42428845,
"repeat": 1
},
{
"requestedHan": 25000,
"hanCharacters": 25632,
"sourceCharacters": 35728,
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/152.0.0.0 Safari/537.36",
"viewport": [
1424,
905
],
"openMs": 272.09999999403954,
"domNodes": 2110,
"selectionMs": {
"median": 1,
"p95": 2.0999999940395355,
"max": 2.399999976158142
},
"insertMs": {
"median": 5.699999988079071,
"p95": 7,
"max": 7.300000011920929
},
"foldMs": {
"median": 48.900000005960464,
"p95": 55,
"max": 55
},
"integrity": true,
"previewMs": [
157,
37.69999998807907,
40
],
"previewNodes": 1058,
"longTasks": {
"count": 6,
"median": 63,
"p95": 245,
"max": 245
},
"heapUsedBytes": 62409024,
"repeat": 2
},
{
"requestedHan": 25000,
"hanCharacters": 25632,
"sourceCharacters": 35728,
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/152.0.0.0 Safari/537.36",
"viewport": [
1424,
905
],
"openMs": 224.90000000596046,
"domNodes": 2110,
"selectionMs": {
"median": 0.7000000178813934,
"p95": 1.4000000059604645,
"max": 2
},
"insertMs": {
"median": 4.399999976158142,
"p95": 6.4000000059604645,
"max": 8
},
"foldMs": {
"median": 39.099999994039536,
"p95": 44.10000002384186,
"max": 44.10000002384186
},
"integrity": true,
"previewMs": [
139,
46.099999994039536,
39.900000005960464
],
"previewNodes": 1058,
"longTasks": {
"count": 4,
"median": 92,
"p95": 200,
"max": 200
},
"heapUsedBytes": 35903770,
"repeat": 3
},
{
"requestedHan": 60000,
"hanCharacters": 61172,
"sourceCharacters": 85716,
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/152.0.0.0 Safari/537.36",
"viewport": [
1424,
905
],
"openMs": 458.39999997615814,
"domNodes": 4720,
"selectionMs": {
"median": 2.9000000059604645,
"p95": 5.699999988079071,
"max": 6.0999999940395355
},
"insertMs": {
"median": 7.5999999940395355,
"p95": 9.699999988079071,
"max": 12.400000005960464
},
"foldMs": {
"median": 120.30000001192093,
"p95": 160.09999999403954,
"max": 160.09999999403954
},
"integrity": true,
"previewMs": [
173.5,
65.60000002384186,
70.09999999403954
],
"previewNodes": 2560,
"longTasks": {
"count": 12,
"median": 110,
"p95": 415,
"max": 415
},
"heapUsedBytes": 60644006,
"repeat": 1
},
{
"requestedHan": 60000,
"hanCharacters": 61172,
"sourceCharacters": 85716,
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/152.0.0.0 Safari/537.36",
"viewport": [
1424,
905
],
"openMs": 649.6999999880791,
"domNodes": 4720,
"selectionMs": {
"median": 2.699999988079071,
"p95": 5.699999988079071,
"max": 5.800000011920929
},
"insertMs": {
"median": 7.5,
"p95": 9.099999994039536,
"max": 10.699999988079071
},
"foldMs": {
"median": 116,
"p95": 149.09999999403954,
"max": 149.09999999403954
},
"integrity": true,
"previewMs": [
209.30000001192093,
80.90000000596046,
88.7999999821186
],
"previewNodes": 2560,
"longTasks": {
"count": 12,
"median": 116,
"p95": 586,
"max": 586
},
"heapUsedBytes": 64379838,
"repeat": 2
},
{
"requestedHan": 60000,
"hanCharacters": 61172,
"sourceCharacters": 85716,
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/152.0.0.0 Safari/537.36",
"viewport": [
1424,
905
],
"openMs": 519.7000000178814,
"domNodes": 4720,
"selectionMs": {
"median": 2.9000000059604645,
"p95": 4.9000000059604645,
"max": 5.5
},
"insertMs": {
"median": 9.200000017881393,
"p95": 11.700000017881393,
"max": 11.900000005960464
},
"foldMs": {
"median": 118.40000000596046,
"p95": 134.5,
"max": 134.5
},
"integrity": true,
"previewMs": [
198.5,
84.80000001192093,
91.59999999403954
],
"previewNodes": 2560,
"longTasks": {
"count": 11,
"median": 119,
"p95": 469,
"max": 469
},
"heapUsedBytes": 43218088,
"repeat": 3
},
{
"requestedHan": 120000,
"hanCharacters": 122322,
"sourceCharacters": 171613,
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/152.0.0.0 Safari/537.36",
"viewport": [
1424,
905
],
"openMs": 894.6000000238419,
"domNodes": 9139,
"selectionMs": {
"median": 7.9000000059604645,
"p95": 11.599999994039536,
"max": 24.700000017881393
},
"insertMs": {
"median": 18.19999998807907,
"p95": 22.19999998807907,
"max": 30.799999982118607
},
"foldMs": {
"median": 247.59999999403954,
"p95": 256.59999999403954,
"max": 256.59999999403954
},
"integrity": true,
"previewMs": [
294.2999999821186,
134.09999999403954,
129.90000000596046
],
"previewNodes": 5117,
"longTasks": {
"count": 14,
"median": 207,
"p95": 821,
"max": 821
},
"heapUsedBytes": 60930415,
"repeat": 1
},
{
"requestedHan": 120000,
"hanCharacters": 122322,
"sourceCharacters": 171613,
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/152.0.0.0 Safari/537.36",
"viewport": [
1424,
905
],
"openMs": 875.3999999761581,
"domNodes": 9139,
"selectionMs": {
"median": 9.199999988079071,
"p95": 15.199999988079071,
"max": 15.900000005960464
},
"insertMs": {
"median": 20.599999994039536,
"p95": 23.19999998807907,
"max": 26.5
},
"foldMs": {
"median": 244.09999999403954,
"p95": 269,
"max": 269
},
"integrity": true,
"previewMs": [
272.2999999821186,
146.30000001192093,
157.40000000596046
],
"previewNodes": 5117,
"longTasks": {
"count": 14,
"median": 192,
"p95": 785,
"max": 785
},
"heapUsedBytes": 31982024,
"repeat": 2
},
{
"requestedHan": 120000,
"hanCharacters": 122322,
"sourceCharacters": 171613,
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/152.0.0.0 Safari/537.36",
"viewport": [
1424,
905
],
"openMs": 842.3000000119209,
"domNodes": 9139,
"selectionMs": {
"median": 8,
"p95": 11.900000005960464,
"max": 15.199999988079071
},
"insertMs": {
"median": 18.900000005960464,
"p95": 20.099999994039536,
"max": 21.700000017881393
},
"foldMs": {
"median": 212.5,
"p95": 240.5,
"max": 240.5
},
"integrity": true,
"previewMs": [
253.7000000178814,
129.19999998807907,
172
],
"previewNodes": 5117,
"longTasks": {
"count": 14,
"median": 191,
"p95": 762,
"max": 762
},
"heapUsedBytes": 49460811,
"repeat": 3
}
]
@@ -0,0 +1,122 @@
[
{
"requestedHan": 25000,
"theme": "paper-moments",
"frameGapsMs": {
"median": 10,
"p95": 20.100000000000364,
"max": 110.09999999999991
},
"frames": 380,
"framesOver25ms": 14,
"longTasks": [
97
],
"scrollTop": 6111,
"scrollHeight": 33908,
"foldedScrollTop": 0,
"caretAfterFold": 1,
"repeat": 1
},
{
"requestedHan": 25000,
"theme": "paper-moments",
"frameGapsMs": {
"median": 10,
"p95": 20.100000000000136,
"max": 50
},
"frames": 374,
"framesOver25ms": 15,
"longTasks": [
57
],
"scrollTop": 6111,
"scrollHeight": 33908,
"foldedScrollTop": 0,
"caretAfterFold": 1,
"repeat": 2
},
{
"requestedHan": 60000,
"theme": "paper-moments",
"frameGapsMs": {
"median": 30.100000000000364,
"p95": 50,
"max": 100
},
"frames": 267,
"framesOver25ms": 210,
"longTasks": [
81,
84
],
"scrollTop": 52492,
"scrollHeight": 80287,
"foldedScrollTop": 0,
"caretAfterFold": 1,
"repeat": 1
},
{
"requestedHan": 60000,
"theme": "paper-moments",
"frameGapsMs": {
"median": 30,
"p95": 40.100000000000364,
"max": 100
},
"frames": 279,
"framesOver25ms": 213,
"longTasks": [
77,
59
],
"scrollTop": 52493,
"scrollHeight": 80287,
"foldedScrollTop": 0,
"caretAfterFold": 1,
"repeat": 2
},
{
"requestedHan": 120000,
"theme": "paper-moments",
"frameGapsMs": {
"median": 70,
"p95": 100,
"max": 130
},
"frames": 264,
"framesOver25ms": 229,
"longTasks": [
84,
52,
89,
58
],
"scrollTop": 53157,
"scrollHeight": 159554,
"foldedScrollTop": 0,
"caretAfterFold": 1,
"repeat": 1
},
{
"requestedHan": 120000,
"theme": "paper-moments",
"frameGapsMs": {
"median": 70.09999999999854,
"p95": 100,
"max": 130.10000000000036
},
"frames": 261,
"framesOver25ms": 230,
"longTasks": [
83,
53
],
"scrollTop": 53195,
"scrollHeight": 159554,
"foldedScrollTop": 0,
"caretAfterFold": 1,
"repeat": 2
}
]
@@ -0,0 +1,119 @@
[
{
"requestedHan": 25000,
"theme": "paper-moments",
"frameGapsMs": {
"median": 10,
"p95": 30.09999999999991,
"max": 120.10000000000002
},
"frames": 356,
"framesOver25ms": 45,
"longTasks": [
116
],
"scrollTop": 6075,
"scrollHeight": 33871,
"foldedScrollTop": 0,
"caretAfterFold": 1,
"repeat": 1
},
{
"requestedHan": 25000,
"theme": "paper-moments",
"frameGapsMs": {
"median": 10,
"p95": 30,
"max": 80.10000000000002
},
"frames": 369,
"framesOver25ms": 29,
"longTasks": [
93
],
"scrollTop": 6111,
"scrollHeight": 33908,
"foldedScrollTop": 0,
"caretAfterFold": 1,
"repeat": 2
},
{
"requestedHan": 60000,
"theme": "paper-moments",
"frameGapsMs": {
"median": 40,
"p95": 59.900000000001455,
"max": 100.09999999999991
},
"frames": 264,
"framesOver25ms": 221,
"longTasks": [
92
],
"scrollTop": 52345,
"scrollHeight": 80177,
"foldedScrollTop": 0,
"caretAfterFold": 1,
"repeat": 1
},
{
"requestedHan": 60000,
"theme": "paper-moments",
"frameGapsMs": {
"median": 40,
"p95": 50.100000000000364,
"max": 130.10000000000036
},
"frames": 265,
"framesOver25ms": 229,
"longTasks": [
84,
109
],
"scrollTop": 52344,
"scrollHeight": 80177,
"foldedScrollTop": 0,
"caretAfterFold": 1,
"repeat": 2
},
{
"requestedHan": 120000,
"theme": "paper-moments",
"frameGapsMs": {
"median": 70,
"p95": 90.10000000000036,
"max": 170.19999999999982
},
"frames": 260,
"framesOver25ms": 235,
"longTasks": [
89,
77
],
"scrollTop": 53200,
"scrollHeight": 159554,
"foldedScrollTop": 0,
"caretAfterFold": 1,
"repeat": 1
},
{
"requestedHan": 120000,
"theme": "paper-moments",
"frameGapsMs": {
"median": 70,
"p95": 90.10000000000036,
"max": 140.10000000000036
},
"frames": 259,
"framesOver25ms": 228,
"longTasks": [
92,
57
],
"scrollTop": 53196,
"scrollHeight": 159554,
"foldedScrollTop": 0,
"caretAfterFold": 1,
"repeat": 2
}
]