Rendering-diagnostikk og operasjonstelemetri

HotPDF skiller cache-oppføringer for rendrede sider etter hver kaller-visible tilstand som kan endre side-piksler, og viser avgrenset diagnostikk når sideinnhold ikke kan rendres fullstendig

Cache-varianter etter tilstand

THotPDF.RenderLoadedPageToBitmapCached nøkler minneoppføringer etter side, DPI, effektiv synlighet for valgfritt innhold, THotPDF.RenderColourIntent og THotPDF.RenderFallbackPolicy

Den vedvarende cachen bruker den samme tilstands-digesten, mens fallback-modusene som produserer diagnostikk, forblir bare i minnet, slik at et disktreff ikke kan miste rapporter om hoppet-over-objekter

Å endre en gruppe med valgfritt innhold velger en annen variant i stedet for å slette den forrige bitmappen, så å slå et lag eller en farge-intensjon tilbake kan gjenbruke tidligere arbeid

Farge-intensjon

PDF.RenderColourIntent := rciRelativeColorimetric;
Bitmap := PDF.RenderLoadedPageToBitmapCached(0, 144);

rciDocument overholder hver innholdsstrøm-ri-operatør og forblir standarden

De fire eksplisitte verdiene overstyrer valg av innholdsstrøm-intensjon og anvendes på påfølgende ICCBased-fyll- og strek-konverteringer

Fallback-policy

PDF.RenderFallbackPolicy := rfpReport;
PDF.RenderFallbackDiagnosticLimit := 256;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
Diagnostics := PDF.GetLastRenderFallbackDiagnostics;

THotPDF.GetLastRenderFallbackDiagnostics returnerer det beholdte settet, mens THotPDF.ClearLastRenderFallbackDiagnostics tømmer det; bufrede rapportmodus-oppføringer beholder sitt diagnostikk-sett, så et minne-cache-treff returnerer den samme rendering-fullførelsesinformasjonen som den opprinnelige rendringen

Enhetlig operasjonstelemetri

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-oppføring som inneholder veggklokketid, CPU-tid for gjeldende tråd, minne, allokering, prosess-I/O, filterdekoding, cache, objektantall, suksess og kansellering

Dokument-innlasting, synkron og bufrede side-rendering, progressive render-slices, selektiv strøm-optimalisering og parallell bilde-optimalisering publiserer den samme oppføringsformen

PeakMemoryBytes er et bærbart dokument-operasjonsanslag snarere enn operativsystemets prosess-arbeidssett, så det forblir stabilt på tvers av verter og inkluderer lastede kilde-bytes, rendrede bitmap-oppføringer, dekodet-bilde-cache-vekt og topp lagring i filterkjeder

PeakProcessMemoryBytes er det største samplede prosess-arbeidssettet, mens AllocationCount er den største samplede økningen i samtidig levende Delphi-minnehåndterer-blokker relativt til operasjonsstart snarere enn en total for levetidsallokering

CPUTimeMicroseconds måler den kallende tråden, mens ReadIOBytes, WriteIOBytes og OtherIOBytes er prosessomfattende tellerdelta og kan derfor inkludere samtidig arbeid i samme prosess

DecodeInputBytes er komprimert inndata, DecodeOutputBytes er endelig filterkjede-utdata, og DecodedBytes er aggregert arbeid på tvers av hvert filtertrinn; DecodeExpansionPermille deler endelig utdata på inndata, der 1000 representerer 1x

ScheduledMemoryBytes er operasjons-opptakelsesanslaget, MemorySchedulerWaitMilliseconds registrerer køtetid, og MemorySchedulerDelayed skiller køet opptakelse fra den allokeringsfrie raske banen

Minne- og allokerings-topper samples ved operasjonsgrenser, filterkjede-fullføring, progressive slices og kanselleringskontrollpunkter, så de er lavoverhead operasjonssignaler snarere enn instruksjonsnivå profileringsspor

Relaterte API-er