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;
rfpIgnorebevarer den eldre tillatende oppførselenrfpReportregistrerer ustøttede operatører, manglende ressurser, ugyldige objekter, dekode-feil, rekursjonsgrenser og ustøttede objekttyperrfpStrictreiser ved den første fallbacken utenfor enBX- ogEX-kompatibilitetsseksjonTHotPDF.RenderFallbackDiagnosticLimitbegrenser beholdt diagnostikkTHotPDF.LastRenderFallbackDroppedCountrapporterer diagnostikk som utelates etter den konfigurerte avgrensede grensen
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