Andrey Epifancev 8e9f53a478 perf: скрипты разбора и сводные данные прогонов 20261026
- perf/analysis: разбор trace (timeline_breakdown), CPU-профилей с source maps
  (cpuprofile_top), heap snapshots (heapdiff), циклов памяти, сравнения масштабов,
  ручной EXPLAIN вложенных запросов (explain_manual), API против X-DB-Time-Ms
  (api_split), сводка горячих точек; тесты ядра в perf/tests/test_analysis.py
- perf/e2e/scenarios/hotspots.spec.ts: CPU-профиль, рендеры React, мутации DOM
  после фильтра, рост CSS-правил по циклам (вне run-all)
- prod-сборка с source maps: PERF_SOURCEMAP=1, perf/stand.sh web-sourcemap (:8082)
- perf/report-data/20261026-s1, 20261026-s2 (summary, sql, analysis, explain-manual),
  t5-types (иллюстрация CPU 6x)
- design.md: решения T10b без обсуждения

Refs #202

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 12:43:46 +04:00

12 KiB
Raw Blame History

Масштаб 1 (20261026-s1) против масштаба 2 (20261026-s2, 1 повтор - оценка)

Скролл: main thread на шаг колеса 200 px, мс (медиана; s2 - один замер)

target роль строк s1 → s2 мс/шаг s1 мс/шаг s2 × main thread s1, мс s2, мс ответ s1 → s2, МБ
FORM_2/AHR/null@x rf 1154 → 1744 78.7 78.3 1.00 26899 26786 4.29 → 6.50
FORM_2/AHR/null@y rf 1154 → 1744 89.0 85.3 0.96 40566 59109 4.29 → 6.50
FORM_2/AHR_LIMIT/null@x rf 27 → 27 52.0 52.4 1.01 728 734 0.01 → 0.01
FORM_2/AHR_LIMIT/null@y rf 27 → 27 71.1 71.7 1.01 284 287 0.01 → 0.01
FORM_2/AHR_RENT/null@x rf 31 → 61 91.2 83.5 0.92 3102 2840 0.02 → 0.03
FORM_2/AHR_RENT/null@y rf 31 → 61 77.4 78.9 1.02 619 1578 0.02 → 0.03
FORM_2/AHR_SECURITY/null@x rf 500 → 500 85.6 83.6 0.98 2738 2676 0.02 → 0.03
FORM_2/AHR_SECURITY/null@y rf 500 → 500 76.4 77.0 1.01 611 1540 0.02 → 0.03
FORM_2/AHR_UTILITY/null@x rf 500 → 500 86.6 82.2 0.95 2771 2630 0.02 → 0.03
FORM_2/AHR_UTILITY/null@y rf 500 → 500 77.1 79.8 1.03 617 1595 0.02 → 0.03
FORM_2/CAP/null@x rf 708 → 1208 78.8 80.4 1.02 27000 27483 2.65 → 4.51
FORM_2/CAP/null@y rf 708 → 1208 85.4 87.2 1.02 23740 41698 2.65 → 4.51
FORM_2/OPER/null@x rf 547 → 1047 80.1 80.7 1.01 27395 27600 2.03 → 3.88
FORM_2/OPER/null@y rf 547 → 1047 88.1 88.2 1.00 18843 36526 2.03 → 3.88
FORM_2/OTCH9F/null@x rf 1 → 1 — — (s2 incomplete) — — — 0.00 → 0.00
FORM_2/OTCH9F/null@y rf 1 → 1 — — (s2 incomplete) — — — 0.00 → 0.00
FORM_2/SMETA/null@x rf 134 → 134 69.3 70.3 1.01 1386 1406 0.10 → 0.10
FORM_2/SMETA/null@y rf 134 → 134 84.9 85.0 1.00 4075 4080 0.10 → 0.10
FORM_4/AHR/null@x rf 110 → 210 90.6 87.3 0.96 29727 28632 0.44 → 0.84
FORM_4/AHR/null@y rf 110 → 210 90.2 89.5 0.99 3426 6984 0.44 → 0.84
FORM_4/CAP/null@x rf 300 → 300 88.5 87.7 0.99 29040 28751 0.44 → 0.83
FORM_4/CAP/null@y rf 300 → 300 93.3 89.8 0.96 3546 7001 0.44 → 0.83
FORM_4/OPER/null@x rf 110 → 210 89.0 88.3 0.99 29383 29129 0.44 → 0.84
FORM_4/OPER/null@y rf 110 → 210 92.1 90.2 0.98 3498 7036 0.44 → 0.84
FORM_4/SMETA/null@x rf 109 → 109 61.8 62.8 1.02 1235 1255 0.08 → 0.08
FORM_4/SMETA/null@y rf 109 → 109 77.7 79.1 1.02 2953 3004 0.08 → 0.08
FORM_4/STRUCTURE/null@x rf 775 → 775 83.6 85.5 1.02 33286 34016 2.86 → 2.90
FORM_4/STRUCTURE/null@y rf 775 → 775 89.7 90.7 1.01 27326 27563 2.86 → 2.90
project/CURRENT_EXPENSES/1/2026@x rf → 77.9 78.2 1.00 4360 4381 1.49 → 1.49
project/CURRENT_EXPENSES/1/2026@y rf → 83.8 83.3 0.99 45240 44977 1.49 → 1.49
project/CURRENT_EXPENSES/2/2026@x rf → 78.4 82.0 1.05 4392 4594 1.49 → 1.49
project/CURRENT_EXPENSES/2/2026@y rf → 83.9 87.3 1.04 45298 47116 1.49 → 1.49
project/CURRENT_EXPENSES/2/2027@x rf → 77.7 77.6 1.00 4351 4347 1.48 → 1.49
project/CURRENT_EXPENSES/2/2027@y rf → 83.6 85.1 1.02 45170 45975 1.48 → 1.49
project/CURRENT_EXPENSES/3/2026@x rf → 77.9 78.0 1.00 4360 4369 1.48 → 1.47
project/CURRENT_EXPENSES/3/2026@y rf → 85.0 82.9 0.98 45906 44771 1.48 → 1.47
project/CURRENT_EXPENSES/4/2026@x rf → 77.2 80.0 1.04 4323 4482 1.49 → 1.49
project/CURRENT_EXPENSES/4/2026@y rf → 83.7 85.4 1.02 45194 46104 1.49 → 1.49
project/CURRENT_EXPENSES/4/2027@x rf → 77.1 78.5 1.02 4316 4397 1.48 → 1.49
project/CURRENT_EXPENSES/4/2027@y rf → 83.4 83.1 1.00 45013 44880 1.48 → 1.49
project/LIMIT/1/2026@x rf → 77.7 79.9 1.03 4351 4476 1.48 → 1.48
project/LIMIT/1/2026@y rf → 82.8 83.3 1.01 44733 45005 1.48 → 1.48
project/LIMIT/2/2026@x rf → 76.9 77.2 1.00 4305 4323 1.49 → 1.48
project/LIMIT/2/2026@y rf → 83.5 83.1 1.00 45082 44857 1.49 → 1.48
project/LIMIT/2/2027@x rf → 77.2 77.0 1.00 4325 4312 1.49 → 1.49
project/LIMIT/2/2027@y rf → 84.0 83.2 0.99 45355 44951 1.49 → 1.49
project/LIMIT/3/2026@x rf → 79.5 77.8 0.98 4451 4356 1.49 → 1.48
project/LIMIT/3/2026@y rf → 83.1 83.4 1.00 44880 45010 1.49 → 1.48
project/LIMIT/4/2026@x rf → 77.3 77.3 1.00 4330 4332 1.48 → 1.48
project/LIMIT/4/2026@y rf → 83.0 82.8 1.00 44836 44715 1.48 → 1.48
project/LIMIT/4/2027@x rf → 77.7 77.8 1.00 4354 4357 1.49 → 1.49
project/LIMIT/4/2027@y rf → 83.4 83.4 1.00 45057 45049 1.49 → 1.49
svod/projects_summaries/filter@y dfip → — — — 110 63 0.49 → 0.50
svod/projects_summaries@y dfip → 93.2 95.9 1.03 20504 21101 0.49 → 0.50
svod/svod1_FORM_1/filter@y dfip → — — — 131 128 0.12 → 0.13
svod/svod1_FORM_1@y dfip → 133.4 133.2 1.00 4537 4527 0.12 → 0.13
svod/svod1_FORM_2/filter@y dfip → — — — 112 103 0.08 → 0.09
svod/svod1_FORM_2@y dfip → 75.6 75.1 0.99 2570 2553 0.08 → 0.09
svod/svod1_FORM_3/filter@y dfip → — — — 105 103 0.07 → 0.07
svod/svod1_FORM_3@y dfip → 70.5 71.0 1.01 1974 1989 0.07 → 0.07
svod/svod1_FORM_4/filter@y dfip → — — — 112 104 0.08 → 0.09
svod/svod1_FORM_4@y dfip → 72.3 76.6 1.06 2459 2603 0.08 → 0.09
svod/svod1_MAIN/filter@y dfip → — — — 166 155 0.13 → 0.14
svod/svod1_MAIN@y dfip → 138.6 139.2 1.00 4712 4733 0.13 → 0.14
svod/svod2_GO/filter@y dfip → — — — — 187 0.00 → 123.25
svod/svod2_GO@y dfip → 184.0 250.9 1.36 376907 2077561 30.54 → 123.25
svod/svod2_RF/filter@y dfip → — — — 215 325 47.22 → 190.40
svod/svod2_RF@y dfip → 187.2 — (s2 incomplete) — 594444 — 47.22 → 0.00

Незавершённые на s2 (скролл упёрся в PERF_MAX_STEPS=5000 шагов вперёд, обратного прохода нет; в summary не входят):

  • svod/svod2_RF@y admin: 5000 шагов, 214.3 мс/шаг, 1115 с, ответ 190.4 МБ
  • svod/svod2_RF@y dfip: 5000 шагов, 256.0 мс/шаг, 1336 с, ответ 190.4 МБ

Модалки: клик → кадр с модалкой, мс (медиана)

модалка роль s1 s2 × main thread s1 s2
admin_audit_json admin 31 40 1.30 33 43
admin_phase_add admin 69 71 1.03 75 79
admin_phase_delete admin 52 51 0.99 56 55
admin_phase_edit admin 52 67 1.29 71 90
admin_ssps_add admin 48 39 0.82 51 43
admin_ssps_archive admin 33 24 0.73 35 24
admin_ssps_edit admin 30 28 0.92 34 31
admin_ssps_users admin 33 28 0.84 38 30
admin_users_add admin 44 49 1.11 49 55
admin_users_delete admin 30 30 1.01 10 21
admin_users_edit admin 27 28 1.01 18 27
admin_users_ssp admin 41 48 1.18 31 39
dict_vsp_add admin 167 507 3.04 169 520
dict_vsp_edit admin 193 609 3.16 205 624
dict_vsp_export admin 159 496 3.12 164 508
project_add_year rf 40 24 0.58 43 21
project_stage_delete admin 30 25 0.85 17 8
project_stages rf 39 25 0.65 44 27
projects_create rf 52 40 0.77 60 44
projects_delete rf 43 29 0.67 50 32
projects_edit rf 46 43 0.94 55 52
sheet_columns_tree rf 58 37 0.64 60 38
sheet_columns_tree@big rf 55 34 0.61 59 35
sheet_create_program rf 88 65 0.74 94 70
sheet_create_program@big rf 75 62 0.83 82 68
sheet_create_project rf 83 66 0.79 89 70
sheet_create_project@big rf 87 63 0.73 92 66
sheet_select_expense rf 93 66 0.71 100 70
sheet_select_expense@big rf 87 70 0.81 93 75
sheet_select_vsp rf 76 58 0.76 83 61
sheet_select_vsp@big rf 74 57 0.78 78 61
task_stage_add admin 28 24 0.85 32 21
task_stage_edit admin 36 24 0.67 48 26
task_stages rf 37 24 0.64 47 30
tasks_confirm_mark admin 35 34 0.99 37 37
tasks_create admin 49 62 1.26 51 64

API (bench, медиана 20 повторов по каждому URL; размер - распакованный ответ)

запрос роль s1, мс s2, мс × s1, МБ s2, МБ
GET свод 2 RF dfip 1805.5 7319.2 4.05 52.69 195.08
GET свод 2 RF admin 1764.9 7146.0 4.05 52.69 195.08
GET лист FORM_4/CAP rf 1730.2 1875.8 1.08 1.15 1.17
GET свод 2 GO dfip 1061.0 4511.8 4.25 30.54 123.25
GET свод 2 GO admin 1057.1 4766.2 4.51 30.54 123.25
GET лист FORM_2/AHR rf 876.4 4789.0 5.46 7.6 9.59
GET лист FORM_4/AHR rf 652.2 1382.2 2.12 0.44 0.84
GET лист FORM_4/OPER rf 611.9 1297.7 2.12 0.44 0.84
GET отчёт проекта CURRENT_EXPENSES rf 356.8 383.4 1.07 1.49 1.49
GET отчёт проекта LIMIT rf 355.3 390.1 1.10 1.49 1.49
GET сводные проектов admin 343.1 684.2 1.99 0.49 0.5
GET сводные проектов dfip 337.1 667.0 1.98 0.49 0.5
GET свод 1 MAIN admin 310.6 747.0 2.41 0.13 0.14
GET свод 1 MAIN dfip 297.2 722.6 2.43 0.13 0.14
GET лист FORM_4/STRUCTURE rf 187.3 263.0 1.40 2.86 2.9
GET лист FORM_2/CAP rf 181.3 297.8 1.64 2.65 4.51
GET лист FORM_2/OPER rf 128.3 265.1 2.07 2.03 3.88
GET свод 1 FORM_2 dfip 121.8 275.1 2.26 0.08 0.09
GET свод 1 FORM_2 admin 119.8 275.3 2.30 0.08 0.09
GET свод 1 FORM_1 dfip 99.3 222.1 2.24 0.12 0.13
GET свод 1 FORM_1 admin 96.8 214.5 2.22 0.12 0.13
GET лист FORM_2/SMETA rf 96.3 247.1 2.57 0.1 0.1
GET лист FORM_4/SMETA rf 77.5 224.8 2.90 0.08 0.08
GET свод 1 FORM_4 dfip 71.9 191.1 2.66 0.08 0.09
GET свод 1 FORM_4 admin 71.1 193.9 2.73 0.08 0.09
GET свод 1 FORM_3 dfip 67.6 110.3 1.63 0.07 0.07
GET свод 1 FORM_3 admin 64.6 111.6 1.73 0.07 0.07
GET лист FORM_2/AHR_SECURITY rf 15.8 19.8 1.25 0.28 0.28
GET лист FORM_2/AHR_UTILITY rf 15.7 17.3 1.10 0.28 0.28
GET лист FORM_2/AHR_RENT rf 4.6 6.2 1.35 0.02 0.03
GET лист FORM_2/AHR_LIMIT rf 3.8 4.5 1.18 0.01 0.01
GET лист FORM_2/OTCH9F rf 2.9 3.2 1.10 0.0 0.0