Горячие точки: сводка 20261026-hot (hotspots.spec.ts, hotspots_summary.py)
Рендеры React на шаг колеса 200 px (профилирующая сборка :8081)
Шаги: hotspots.spec.ts всегда делает 40 шагов вперёд и 40 назад без проверки конца прокрутки. На коротких страницах (свод 1 MAIN — 17 шагов до конца, AHR_RENT — 31 строка) часть шагов ничего не прокручивает, и «на шаг» разбавлено: с main_thread_ms_per_step основного прогона (scroll.spec) не сравнивать; использовать доли, рендеры на коммит и состав топа.
| target |
роль |
шагов |
коммитов/шаг |
рендеров компонентов/шаг |
из них Styled(td)/шаг |
self React, мс |
main thread/шаг, мс |
| FORM_2/AHR/null:y |
rf |
80 |
3.31 |
14808 |
1696 |
3708 |
76.5 |
| FORM_2/AHR/null:x |
rf |
80 |
3.49 |
17090 |
2007 |
4222 |
81.3 |
| FORM_4/STRUCTURE/null:y |
rf |
80 |
3.75 |
17932 |
2021 |
4439 |
92.4 |
| project/LIMIT/1/2026:y |
rf |
80 |
3.73 |
15921 |
1961 |
3937 |
79.5 |
| svod/svod1_MAIN:y |
dfip |
80 |
1.27 |
9657 |
1731 |
3768 |
63.3 |
| svod/projects_summaries:y |
dfip |
80 |
2.7 |
16018 |
2756 |
5268 |
94.7 |
| svod/svod2_GO:y |
dfip |
80 |
2.01 |
39768 |
7810 |
10317 |
179.0 |
- FORM_2/AHR/null:y: ForwardRef(Styled(td)) 135665/1785.1 мс; MRT_TableBodyCell 129295/288.5 мс; ForwardRef(Styled(Component)) 52005/208.2 мс; ForwardRef(TableCell) 135665/172.2 мс; MRT_TableBodyCellValue 122490/163.3 мс; ForwardRef(Tooltip) 17400/126.2 мс
- FORM_2/AHR/null❌ ForwardRef(Styled(td)) 160576/2068.7 мс; MRT_TableBodyCell 153432/281.2 мс; ForwardRef(Styled(Component)) 59916/248.8 мс; ForwardRef(TableCell) 160576/216.5 мс; MRT_TableBodyCellValue 148392/189.5 мс; ForwardRef(Tooltip) 20014/152.8 мс
- FORM_4/STRUCTURE/null:y: ForwardRef(Styled(td)) 161650/2158.0 мс; MRT_TableBodyCell 153400/354.1 мс; ForwardRef(Styled(Component)) 63000/239.4 мс; ForwardRef(TableCell) 161650/223.7 мс; MRT_TableBodyCellValue 145730/176.4 мс; ForwardRef(Tooltip) 21065/158.9 мс
- project/LIMIT/1/2026:y: ForwardRef(Styled(td)) 156842/2050.5 мс; MRT_TableBodyCell 149980/248.8 мс; ForwardRef(Styled(Component)) 53547/217.8 мс; ForwardRef(TableCell) 156842/213.0 мс; MRT_TableBodyCellValue 142481/174.5 мс; ForwardRef(Tooltip) 17914/131.8 мс
- svod/svod1_MAIN:y: ForwardRef(Styled(td)) 138474/1902.3 мс; MRT_TableBodyCellValue 135177/1152.5 мс; MRT_TableBodyCell 138474/241.7 мс; ForwardRef(TableCell) 138474/174.9 мс; ForwardRef(Styled(tr)) 3297/46.3 мс; ForwardRef(Styled(Component)) 10099/46.0 мс
- svod/projects_summaries:y: ForwardRef(Styled(td)) 220500/2973.7 мс; MRT_TableBodyCellValue 213150/1104.3 мс; MRT_TableBodyCell 220500/351.0 мс; ForwardRef(TableCell) 220500/272.0 мс; ForwardRef(Styled(tr)) 7350/92.9 мс; ForwardRef(Styled(Component)) 22566/92.7 мс
- svod/svod2_GO:y: ForwardRef(Styled(td)) 624800/7648.1 мс; MRT_TableBodyCell 624800/1152.4 мс; ForwardRef(TableCell) 624800/745.0 мс; MRT_TableBodyCellValue 624800/307.0 мс; MRT_TableBodyRow 5680/147.6 мс; Insertion 642002/126.4 мс
CPU-профили (prod-сборка с source maps :8082; разбор - cpuprofile-top.md)
Шаги: hotspots.spec.ts всегда делает 40 шагов вперёд и 40 назад без проверки конца прокрутки. На коротких страницах (свод 1 MAIN — 17 шагов до конца, AHR_RENT — 31 строка) часть шагов ничего не прокручивает, и «на шаг» разбавлено: с main_thread_ms_per_step основного прогона (scroll.spec) не сравнивать; использовать доли, рендеры на коммит и состав топа.
| target |
роль |
шагов |
main thread/шаг под профайлером, мс |
профиль |
| FORM_2/AHR_RENT/null:y |
rf |
80 |
7.7 |
artifacts/hot-FORM_2_AHR_RENT_null-y.cpuprofile |
| FORM_2/AHR/null:y |
rf |
80 |
80.5 |
artifacts/hot-FORM_2_AHR_null-y.cpuprofile |
| FORM_2/AHR/null:x |
rf |
80 |
80.9 |
artifacts/hot-FORM_2_AHR_null-x.cpuprofile |
| FORM_4/STRUCTURE/null:y |
rf |
80 |
91.1 |
artifacts/hot-FORM_4_STRUCTURE_null-y.cpuprofile |
| project/LIMIT/1/2026:y |
rf |
80 |
77.3 |
artifacts/hot-project_LIMIT_1_2026-y.cpuprofile |
| svod/svod1_MAIN:y |
dfip |
80 |
60.4 |
artifacts/hot-svod_svod1_MAIN-y.cpuprofile |
| svod/projects_summaries:y |
dfip |
80 |
90.7 |
artifacts/hot-svod_projects_summaries-y.cpuprofile |
| svod/svod2_GO:y |
dfip |
80 |
160.7 |
artifacts/hot-svod_svod2_GO-y.cpuprofile |
Фильтр свода: мутации DOM контейнера .MuiTableContainer-root за окно наблюдения после ввода «1»
| режим |
target |
main thread за окно, мс |
кадров |
кадров с мутацией |
первая мутация (кадр) |
long tasks |
виды мутаций |
рендеры React |
| react |
svod/svod2_GO:filter |
804 |
1796 |
0 |
-1 |
1 (137 мс) |
нет |
6 коммитов / 18021 |
| cpu |
svod/svod2_GO:filter |
661 |
1798 |
0 |
-1 |
1 (103 мс) |
нет |
коммитов / |
| cpu |
svod/svod2_RF:filter |
743 |
1796 |
1 |
20 |
1 (139 мс) |
attributes:tbody.MuiTableBody-root@class ×1 |
коммитов / |
| cpu |
svod/svod1_MAIN:filter |
601 |
1800 |
1 |
20 |
1 (71 мс) |
attributes:tbody.MuiTableBody-root@class ×1 |
коммитов / |
Рост CSS-правил и matchMedia по циклам: FORM_2/AHR/null:cssgrowth (цикл AHR -> скролл 40 шагов -> /tasks)
| цикл |
main thread/шаг, мс |
CSS-правил |
@media |
style |
вызовов matchMedia |
нетто listeners matchMedia |
| 0 |
|
2874 |
73 |
5 |
|
|
| 1 |
78.1 |
3232 |
96 |
5 |
|
|
| 2 |
77.8 |
3238 |
96 |
5 |
|
|
| 3 |
77.7 |
3240 |
96 |
5 |
|
|
| 4 |
78.4 |
3240 |
96 |
5 |
|
|
| 5 |
77.7 |
3242 |
96 |
5 |
|
|
| 6 |
76.7 |
3243 |
96 |
5 |
|
|
| 7 |
78.4 |
3243 |
96 |
5 |
|
|
| 8 |
79.7 |
3244 |
96 |
5 |
|
|
| 9 |
78 |
3245 |
96 |
5 |
|
|
| 10 |
77.1 |
3245 |
96 |
5 |
|
|
| 11 |
78.7 |
3245 |
96 |
5 |
|
|
| 12 |
79.7 |
3245 |
96 |
5 |
|
|
| 13 |
78.5 |
3246 |
96 |
5 |
|
|
| 14 |
76.7 |
3249 |
96 |
5 |
|
|
| 15 |
78.1 |
3249 |
96 |
5 |
|
|
Рост CSS-правил и matchMedia по циклам: FORM_2/AHR/null:cssgrowth (цикл AHR -> скролл -> /tasks -> второй лист -> скролл -> /tasks, со счётчиком matchMedia)
| цикл |
main thread/шаг, мс |
CSS-правил |
@media |
style |
вызовов matchMedia |
нетто listeners matchMedia |
| 0 |
|
2874 |
73 |
5 |
0 |
0 |
| 1 |
75.4 |
3454 |
102 |
5 |
2 |
0 |
| 2 |
75.9 |
3471 |
102 |
5 |
4 |
0 |
| 3 |
78.3 |
3476 |
102 |
5 |
6 |
0 |
| 4 |
79 |
3482 |
102 |
5 |
8 |
0 |
| 5 |
77 |
3490 |
102 |
5 |
10 |
0 |
| 6 |
77.5 |
3497 |
102 |
5 |
12 |
0 |
| 7 |
77.5 |
3500 |
102 |
5 |
14 |
0 |
| 8 |
78.2 |
3501 |
102 |
5 |
16 |
0 |
| 9 |
79.3 |
3504 |
102 |
5 |
18 |
0 |
| 10 |
77.1 |
3505 |
102 |
5 |
20 |
0 |
Топ мест вызова matchMedia (последний цикл, нарастающим итогом):
- 20 ×
(max-width:720px) @ at static/js/408_script.6797a7e7.js:162:21515 < at Object.useMemo (static/js/lib-react_script.73464df3.js:2:64779) < at n.useMemo (static/js/lib-react_script.73464df3.js:2:135509)
Модалки (повтор на восстановленных данных)
| модалка |
роль |
клик → кадр, мс |
main thread, мс |
| dict_vsp_add |
admin |
165.3 |
169.4 |
| dict_vsp_add |
admin |
167.4 |
171.7 |
| dict_vsp_add |
admin |
185 |
189.5 |
| dict_vsp_edit |
admin |
183.5 |
190.0 |
| dict_vsp_edit |
admin |
188.4 |
199.3 |
| dict_vsp_edit |
admin |
193.5 |
204.0 |
| dict_vsp_export |
admin |
150.8 |
154.2 |
| dict_vsp_export |
admin |
149.2 |
153.6 |
| dict_vsp_export |
admin |
147.2 |
151.6 |
| модалка |
коммитов |
рендеров |
self, мс |
топ |
| dict_vsp_add |
10 |
26971 |
92.9 |
ForwardRef(Styled(td)) 2896/37.0; ForwardRef(Styled(span)) 2851/9.1; ForwardRef(TableCell) 2896/4.4; MRT_TableBodyCell 2880/4.4 |
| dict_vsp_edit |
12 |
27287 |
93.3 |
ForwardRef(Styled(td)) 2896/37.2; ForwardRef(Styled(span)) 2877/9.6; MRT_TableBodyCell 2880/7.1; ForwardRef(TableCell) 2896/3.3 |
| dict_vsp_export |
9 |
25722 |
82.2 |
ForwardRef(Styled(td)) 2896/43.1; ForwardRef(Styled(span)) 2728/9.2; MRT_TableBodyCell 2880/5.0; ForwardRef(TableCell) 2896/3.6 |