Renderingsdiagnostik og driftstelemetri
HotPDF skelner renderede sidecacheposter efter enhver synlig kaldetilstand, som kan ændre sidepixels, og eksponerer afgrænset diagnostik, når sideindhold ikke kan renderes fuldstændigt
Tilstandsbevidste cachevarianter
THotPDF.RenderLoadedPageToBitmapCached nøglelægger hukommelsesposter efter side, DPI, effektiv synlighed af valgfrit indhold, THotPDF.RenderColourIntent og THotPDF.RenderFallbackPolicy
Den persistente cache bruger samme tilstandsdigest, mens fallbacktilstande, der producerer diagnostik, kun findes i hukommelsen, så et diskhit ikke kan miste rapporter om udeladte objekter
Ændring af en gruppe med valgfrit indhold vælger en anden variant i stedet for at slette det forrige bitmap, så skift tilbage til et lag eller en farveintention kan genbruge tidligere arbejde
Farveintention
PDF.RenderColourIntent := rciRelativeColorimetric;
Bitmap := PDF.RenderLoadedPageToBitmapCached(0, 144);
rciDocument følger hver ri-operator i indholdsstrømmen og er fortsat standarden
De fire eksplicitte værdier tilsidesætter valg af intention i indholdsstrømmen og anvendes på efterfølgende ICCBased-konverteringer af fyld og streg
Fallbackpolitik
PDF.RenderFallbackPolicy := rfpReport;
PDF.RenderFallbackDiagnosticLimit := 256;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
Diagnostics := PDF.GetLastRenderFallbackDiagnostics;
rfpIgnorebevarer den tidligere lempelige adfærdrfpReportregistrerer ikke-understøttede operatorer, manglende ressourcer, ugyldige objekter, afkodningsfejl, rekursionsgrænser og ikke-understøttede objekttyperrfpStrictrejser en fejl ved første fallback uden for etBX- ogEX-kompatibilitetsafsnitTHotPDF.RenderFallbackDiagnosticLimitbegrænser den bevarede diagnostikTHotPDF.LastRenderFallbackDroppedCountangiver diagnostik, som er udeladt efter den konfigurerede grænse
THotPDF.GetLastRenderFallbackDiagnostics returnerer det bevarede sæt, mens THotPDF.ClearLastRenderFallbackDiagnostics rydder det, og cachede poster i rapporttilstand bevarer deres diagnostiksæt, så et hukommelsescachehit returnerer de samme oplysninger om renderingens fuldstændighed som den oprindelige rendering
Samlet driftstelemetri
if PDF.GetLastOperationTelemetry(Info) then
begin
WriteLn(Info.OperationName);
WriteLn(Info.ElapsedMilliseconds);
WriteLn(Info.CPUTimeMicroseconds);
WriteLn(Info.PeakProcessMemoryBytes);
WriteLn(Info.MemorySchedulerWaitMilliseconds);
WriteLn(Info.DecodeExpansionPermille);
end;
THotPDF.GetLastOperationTelemetry returnerer en THPDFOperationTelemetry-post med målinger for vægtid, CPU-tid for aktuel tråd, hukommelse, allokering, proces-I/O, filterafkodning, cache, objektantal, succes og annullering
Dokumentindlæsning, synkron og cachet siderendering, progressive renderingsudsnit, selektiv strømoptimering og parallel billedoptimering offentliggør den samme postform
PeakMemoryBytes er et portabelt estimat for dokumentoperationen frem for operativsystemets procesarbejdssæt, så det forbliver stabilt på tværs af værter og omfatter indlæste kildebytes, renderede bitmapposter, vægt i cache for afkodede billeder og maksimal lagerplads i filterkæden
PeakProcessMemoryBytes er det største stikprøveudtagne procesarbejdssæt, mens AllocationCount er den største stikprøveudtagne stigning i samtidige levende Delphi-hukommelsesblokke i forhold til operationens start, ikke et samlet livstidsantal af allokeringer
CPUTimeMicroseconds måler den kaldende tråd, mens ReadIOBytes, WriteIOBytes og OtherIOBytes er procesdækkende tællerdeltaer og derfor kan omfatte samtidig arbejde i samme proces
DecodeInputBytes er komprimeret input, DecodeOutputBytes er det endelige output fra filterkæden, og DecodedBytes er samlet arbejde på tværs af hvert filtertrin, mens DecodeExpansionPermille dividerer endeligt output med input, hvor 1000 svarer til 1x
ScheduledMemoryBytes er operationens estimerede optagelse, MemorySchedulerWaitMilliseconds registrerer køtid, og MemorySchedulerDelayed skelner køet optagelse fra den allokeringsfrie hurtige sti
Hukommelses- og allokeringstoppe måles ved operationsgrænser, fuldførelse af filterkæder, progressive udsnit og annulleringskontrolpunkter, så de er driftssignaler med lav overhead frem for profileringsspor på instruktionsniveau