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;

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

Relaterede API'er