# Performanceaudit 2026-07-29 ## Baseline - Lokale quickbenchmark: 250 invoeritems op Windows 11, Python 3.13, 16 CPU-threads. - Import: p50 348,879 ms; p95 825,107 ms; totaal 125.982,74 ms. - Dashboardlijst: p95 1.128,986 ms in de synthetische benchmark. - Detail: p95 101,754 ms. - Rescore: 53,284 ms voor de overgebleven unieke job in deze quickrun. - Piekgeheugen: 105,588 MB. - Frontend: lokale CSS en JavaScript, zonder framework of externe runtimeassets. De eerste run ontdekte een echte benchmarkfout: de generieke HTML-fixture leverde slechts vier van zes verwachte velden. De adapter en fixture ondersteunen nu ook gelabelde publicatiedatum en dienstverband. De herhaalde kwaliteitsrun behaalt 12/12 parservelden, dedupeprecision 1,0, recall 1,0 en nul rankingchurn. ## Wijzigingen - Vacaturepaginering verlaagd van 30 naar 20 kaarten per pagina. - Ultrawideframe gecentreerd zonder extra clientcode. - Mobiele pipeline gebruikt een verticale grid en veroorzaakt geen horizontale documentoverflow. - Runtimeheartbeat gebruikt de bestaande cache en voegt geen netwerkprobe aan paginarendering toe. ## Resterende risico's - De synthetische quickimport overschrijdt de historische NFR-007-p95-doelwaarde; profiling van het volledige 25.000-itempad blijft zinvol vóór opschaling. - De quickbenchmark meldt meer dan 7.900 databasequeries voor 250 importpogingen. Correctheid en idempotentie zijn goed, maar bulkimport is de eerstvolgende optimalisatiekandidaat. - Queuediepte is met de generieke Django-cachebackend niet betrouwbaar meetbaar en wordt daarom eerlijk als onbekend getoond. ## Productiereleaseprofiling De releaseherhaling overschreed opnieuw Django's queryloglimiet van 9.000 queries voordat de 250-itemrun afrondde. Een aansluitende herhaalrun produceerde door achtergebleven benchmarkidentiteiten geen nieuwe vacatures; database-isolatie via de lokale `.env` activeerde vervolgens terecht de productiedriver. Daardoor is geen betrouwbare nawaarde beschikbaar en is geen risicovolle pipelinebulkrefactor in de productieoplevering opgenomen. Vervolg: geef de benchmark een expliciete tijdelijke database en profileer `process_extraction_batch` per queryfamilie; behoud idempotentie, dedupeprecision/recall 1,0 en nul rankingchurn.