perf(layout): bereken doorlopende lijstnummers lineair per deckrevisie #1050

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

Context
numberedListStartFor loopt recursief terug door de hele doorlopende keten. Rail, presentatiemodus en export roepen dit per slide opnieuw aan.

Impact
Voor 5000 doorlopend genummerde slides zijn 12.497.500 eerdere-slidebezoeken nodig en heeft de laatste call recursiediepte 4999, met stack-overflowrisico.

Relevante code

  • lib/services/slide_layout_metrics.dart:182
  • lib/services/slide_rasterizer.dart:212
  • lib/widgets/panels/slide_list_panel.dart:574

Acceptatie

  • Bereken startnummers in één lineaire pass per deck/revisie en deel de resultaten met alle oppervlakken.
  • Geen recursie afhankelijk van decklengte.
  • Schaaltest bewijst lineair gedrag op een lange keten en bewaakt onderbrekingen/herstarts van nummering.
Context numberedListStartFor loopt recursief terug door de hele doorlopende keten. Rail, presentatiemodus en export roepen dit per slide opnieuw aan. Impact Voor 5000 doorlopend genummerde slides zijn 12.497.500 eerdere-slidebezoeken nodig en heeft de laatste call recursiediepte 4999, met stack-overflowrisico. Relevante code - lib/services/slide_layout_metrics.dart:182 - lib/services/slide_rasterizer.dart:212 - lib/widgets/panels/slide_list_panel.dart:574 Acceptatie - Bereken startnummers in één lineaire pass per deck/revisie en deel de resultaten met alle oppervlakken. - Geen recursie afhankelijk van decklengte. - Schaaltest bewijst lineair gedrag op een lange keten en bewaakt onderbrekingen/herstarts van nummering.
Author
Owner

Opgepakt. Tak: feat/collab-recovery-key-978 (huidige werkkopie). Reikwijdte: lib/services/slide_layout_metrics.dart (nieuwe lineaire numberedListStarts), slide_rasterizer.dart, widgets/panels/slide_list_panel.dart; single-slide-oppervlakken houden numberedListStartFor, nu recursievrij.

Opgepakt. Tak: feat/collab-recovery-key-978 (huidige werkkopie). Reikwijdte: lib/services/slide_layout_metrics.dart (nieuwe lineaire numberedListStarts), slide_rasterizer.dart, widgets/panels/slide_list_panel.dart; single-slide-oppervlakken houden numberedListStartFor, nu recursievrij.
Author
Owner

Gebouwd en gemerged op main (13436706, PR #1076). numberedListStarts berekent alle startnummers in één lineaire pass; rasterizer en slide-lijstpaneel delen die pass, numberedListStartFor delegeert nu ernaar en is recursievrij (single-slide-oppervlakken: preview, presenter, audience). Schaaltest over 5000 slides bewijst lineair gedrag en dat de diepste slide zonder recursie oplost; tests bewaken onderbrekingen/herstarts en de reorder-helper die ik moest afsplitsen voor de klasse/bestand/methodepoorten. make check groen. Niet meegenomen: de full-deck-preview en export gebruiken geen doorlopende nummering (findings-render), dus die bleven ongemoeid.

Gebouwd en gemerged op main (13436706, PR #1076). numberedListStarts berekent alle startnummers in één lineaire pass; rasterizer en slide-lijstpaneel delen die pass, numberedListStartFor delegeert nu ernaar en is recursievrij (single-slide-oppervlakken: preview, presenter, audience). Schaaltest over 5000 slides bewijst lineair gedrag en dat de diepste slide zonder recursie oplost; tests bewaken onderbrekingen/herstarts en de reorder-helper die ik moest afsplitsen voor de klasse/bestand/methodepoorten. make check groen. Niet meegenomen: de full-deck-preview en export gebruiken geen doorlopende nummering (findings-render), dus die bleven ongemoeid.
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#1050
No description provided.