- report-data/20261026-control-s1: CPU 4x, 1 повтор (FORM_2/AHR, свод 1 MAIN, свод 2 GO, модалка выбора ВСП на большом листе), отдельный run_id - analysis/api-split: полное время API против заголовка X-DB-Time-Ms (вместо py-spy, которому на macOS нужен root) - analysis/modal-renders, hotspots: рендеры модалок прогона s1, циклы CSS и matchMedia со вторым листом Refs #202 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
7.6 KiB
7.6 KiB
Горячие точки: сводка 20261026-hot (hotspots.spec.ts, hotspots_summary.py)
Рендеры React на шаг колеса 200 px (профилирующая сборка :8081)
| 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)
| 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 |