# Горячие точки: сводка 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:x: 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 |