perf(layout): cache split-run grenzen en tekstfit per deck- en themarevisie #1051

Closed
opened 2026-08-01 08:26:09 +00:00 by brenno · 3 comments
Owner

Context
Voor iedere slide zoekt sharedSplitFitScale opnieuw de volledige split-run en meet daarna ieder runlid opnieuw met TextPainter. Rail, presenter en export herhalen dit; presenter-rebuilds kunnen ook door de klok worden veroorzaakt.

Impact
Een run van 150 slides vraagt 22.500 volledige lidmetingen; 1000 slides ongeveer één miljoen. Het werk hangt niet af van de afzonderlijke widgetbuild maar wordt toch telkens herhaald.

Relevante code

  • lib/services/split_run.dart:50 en 113
  • lib/services/slide_layout_metrics.dart:350 en 678

Acceptatie

  • Bepaal runs en gedeelde minimumschaal eenmaal per deck-/thema-/fontrevisie.
  • Alle previews, presentatieoppervlakken en export gebruiken dezelfde cache/voorberekende index.
  • Test bewaakt invalidatie bij inhoud, rungrens, thema en font plus lineair aantal metingen.
Context Voor iedere slide zoekt sharedSplitFitScale opnieuw de volledige split-run en meet daarna ieder runlid opnieuw met TextPainter. Rail, presenter en export herhalen dit; presenter-rebuilds kunnen ook door de klok worden veroorzaakt. Impact Een run van 150 slides vraagt 22.500 volledige lidmetingen; 1000 slides ongeveer één miljoen. Het werk hangt niet af van de afzonderlijke widgetbuild maar wordt toch telkens herhaald. Relevante code - lib/services/split_run.dart:50 en 113 - lib/services/slide_layout_metrics.dart:350 en 678 Acceptatie - Bepaal runs en gedeelde minimumschaal eenmaal per deck-/thema-/fontrevisie. - Alle previews, presentatieoppervlakken en export gebruiken dezelfde cache/voorberekende index. - Test bewaakt invalidatie bij inhoud, rungrens, thema en font plus lineair aantal metingen.
Author
Owner

Opgepakt. Tak: codex/perf-split-fit-cache-1051. Verwachte reikwijdte: lib/services/split_run.dart, de render-/preview-/presentatie-/exportaanroepers, tests en zo nodig docs/PERFORMANCE_GUIDE.md.

Opgepakt. Tak: codex/perf-split-fit-cache-1051. Verwachte reikwijdte: lib/services/split_run.dart, de render-/preview-/presentatie-/exportaanroepers, tests en zo nodig docs/PERFORMANCE_GUIDE.md.
Author
Owner

Afgerond en op main geverifieerd in mergecommit 88f1058e10 (PR #1080). Split-rungrenzen en gedeelde tekstfit worden nu lineair voorbereid en per slidelijst/thema/font hergebruikt; presenter- en beamerbewerkingen invalideren expliciet. De tests bewaken inhoud, rungrens, thema, geladen font, cacheterugkeer en 150 metingen voor 150 runleden. Niet inbegrepen: geen bestandsformaat-, dependency- of netwerk-/DAST-wijziging.

Afgerond en op main geverifieerd in mergecommit 88f1058e10f7770b1ee9d9ea108f25a719222ca8 (PR #1080). Split-rungrenzen en gedeelde tekstfit worden nu lineair voorbereid en per slidelijst/thema/font hergebruikt; presenter- en beamerbewerkingen invalideren expliciet. De tests bewaken inhoud, rungrens, thema, geladen font, cacheterugkeer en 150 metingen voor 150 runleden. Niet inbegrepen: geen bestandsformaat-, dependency- of netwerk-/DAST-wijziging.
brenno reopened this issue 2026-08-02 01:33:08 +00:00
Author
Owner

Afgerond via PR #1080 (commit 6c424254f). De trackerstatus was na de merge blijven staan.

Opnieuw getoetst op de huidige main:

  • cache per slidelijst-/deckrevisie, thema en font;
  • invalidatie bij inhoud en rungrens, plus expliciet bij live in-place wijzigingen;
  • gedeelde index gebruikt door rail, hoofdpreview, presenter, publieksscherm en rasterexport;
  • prestatietest bewijst exact 150 metingen voor een run van 150 slides, waarna alle indexlookups zonder nieuwe meting verlopen;
  • gerichte regressiesuite: 119 tests groen;
  • actuele volledige make check-full: 8.011 tests groen, 87,6% dekking.

Daarmee zijn alle acceptatiepunten van dit issue aantoonbaar afgedekt.

Afgerond via PR #1080 (commit 6c424254f). De trackerstatus was na de merge blijven staan. Opnieuw getoetst op de huidige `main`: - cache per slidelijst-/deckrevisie, thema en font; - invalidatie bij inhoud en rungrens, plus expliciet bij live in-place wijzigingen; - gedeelde index gebruikt door rail, hoofdpreview, presenter, publieksscherm en rasterexport; - prestatietest bewijst exact 150 metingen voor een run van 150 slides, waarna alle indexlookups zonder nieuwe meting verlopen; - gerichte regressiesuite: 119 tests groen; - actuele volledige `make check-full`: 8.011 tests groen, 87,6% dekking. Daarmee zijn alle acceptatiepunten van dit issue aantoonbaar afgedekt.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#1051
No description provided.