perf(export): rasteriseer PDF/PPTX met een begrensd geheugenvenster #1047

Closed
opened 2026-08-01 08:26:06 +00:00 by brenno · 1 comment
Owner

Context
SlideRasterizer bewaart alle gerenderde PNGs in List en verhoogt tegelijk de globale image-cache tot 1 GiB. PDF/PPTX-opbouw start pas nadat alle slides zijn gerasteriseerd.

Impact
Bij 1920×1080 is één ruwe capture circa 7,9 MiB. Honderden hoog-entropische slides kunnen meerdere gigabytes aan renders vasthouden, nog vóór PDF/ZIP-assemblage.

Relevante code

  • lib/services/slide_rasterizer.dart:92 en 123
  • lib/services/export_service.dart:477 en 527

Acceptatie

  • Rasteriseer en schrijf met een klein expliciet begrensd venster, of weiger vooraf op een onderbouwd totaalbudget.
  • Annuleren ruimt tussenresultaten en image-cache altijd op.
  • Een schaaltest met een groot deck bewaakt piekgeheugen/gelijktijdig levende renders, niet alleen dat export functioneel eindigt.
Context SlideRasterizer bewaart alle gerenderde PNGs in List<Uint8List> en verhoogt tegelijk de globale image-cache tot 1 GiB. PDF/PPTX-opbouw start pas nadat alle slides zijn gerasteriseerd. Impact Bij 1920×1080 is één ruwe capture circa 7,9 MiB. Honderden hoog-entropische slides kunnen meerdere gigabytes aan renders vasthouden, nog vóór PDF/ZIP-assemblage. Relevante code - lib/services/slide_rasterizer.dart:92 en 123 - lib/services/export_service.dart:477 en 527 Acceptatie - Rasteriseer en schrijf met een klein expliciet begrensd venster, of weiger vooraf op een onderbouwd totaalbudget. - Annuleren ruimt tussenresultaten en image-cache altijd op. - Een schaaltest met een groot deck bewaakt piekgeheugen/gelijktijdig levende renders, niet alleen dat export functioneel eindigt.
Author
Owner

Opgelost op main (PR #1091, merge in c4a2fad2). De raster-export weigert nu vóóraf op een onderbouwd totaalbudget (kMaxRasterExportBytes = 4 GiB) met een melding, en ruimt de image-cache plus tussenresultaten na afloop én bij annulering altijd op. Schaaltest bewijst weigering-zonder-render boven het budget. Kanttekening: een echt streamend venster vergt een grotere assemblage-refactor (pdf/archive houden het hele document in geheugen); het vooraf-budget is de tweede geaccepteerde optie uit het issue.

Opgelost op main (PR #1091, merge in c4a2fad2). De raster-export weigert nu vóóraf op een onderbouwd totaalbudget (kMaxRasterExportBytes = 4 GiB) met een melding, en ruimt de image-cache plus tussenresultaten na afloop én bij annulering altijd op. Schaaltest bewijst weigering-zonder-render boven het budget. Kanttekening: een echt streamend venster vergt een grotere assemblage-refactor (pdf/archive houden het hele document in geheugen); het vooraf-budget is de tweede geaccepteerde optie uit het issue.
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#1047
No description provided.