← EnergyView

Fase 3 — exact hergebruik, geheugen en werkverdeling

Geen tarieven, rendementen, heffingen, kandidaten, selectieregels of DP tie-breaking gewijzigd. Golden master: acht scenario's geslaagd, bedragen binnen €0,01 en identieke identifiers/rangschikkingen.

Meting vóór wijziging

node scripts/perf/count-calls.mjs <scenario> <bestand.json> gebruikt V8 precise coverage. Dit telt echte oproepen maar schakelt optimalisatie uit; de looptijd hiervan is geen benchmark.

ScenariodynamicBattery vóórNadayAheadDispatch vóórNa
dynamic-ev-battery29.37725.2022724
battery-study10.6149.5162422
purchase-plan42.45736.4622724

Dit bevestigt veel dispatch-oproepen. Niet iedere oproep is een volledige jaar-DP: de dagplanner roept kortere vensters aan. Coverage-tijden zijn niet vergelijkbaar met normale uitvoering.

Wijzigingen

Voor/na (indicatieve Node-meting, dezelfde harness/fixtures)

npm run perf:golden -- --out=.perf-results/audit-phase3-retention

ScenarioFase 2 sFase 3 sPiek-RSS vóór MiBNa MiBHeap na vóór MiBNa MiB
dynamic-ev-battery16,97815,1701.1771.103917696
battery-study7,7157,640817833608614
purchase-plan22,30419,4721.2391.092979477

Eén run per versie, geen statistisch bewezen versnelling; gedeelde CPU/GC geven spreiding. De studie gebruikt in deze run iets meer geheugen. Het mobiele geheugenrisico is verminderd maar niet opgelost: nog circa 1,1 GiB piek. Geen claim van <2 s of geen browser-Long-Tasks.

node scripts/perf/csv.mjs: vijf herhalingen, mediaan, eenvoudige synthetische rijen: één jaar 15,95 → 12,32 ms; vier jaar 42,09 → 39,04 ms. Dit zijn parser-CPU-tijden in Node, geen browser-importtijden en niet dezelfde fixture/omgeving als de externe audit. De belangrijkste UI-wijziging is verplaatsing naar een worker. De echte Node-worker is getest met 35.040 rijen terwijl de hoofd-eventloop doorloopt; browserresponsiviteit daarmee niet gemeten.

Bewust niet gedaan

Grove batterijzoektocht/vroegtijdig afbreken kan bij discontinue capaciteitstarieven en sturing een winnaar missen. Zonder bewezen ondergrens is dat onverenigbaar met exact dezelfde rangschikking. Geen min-plus-herschrijving zonder bewijs van voordeel en identieke tie-breaking. Typed-array-transformatie en verdere structurele geheugenbesparing blijven werkpunten.

Volledige fasecontrole: 181/181 tests geslaagd, geen nieuwe ESLint- of checkJs-diagnosegroepen. Deployment-source-test controleert reproduceerbaarheid van beide Cloudflare-builds en HA-bestanden. De bestaande statische diagnosebaseline is niet nul (zie fase 1).