Renderingsdiagnostik och operationstelemetri

HotPDF skiljer cachelagrade posteringar i den renderade sidan åt genom varje anroparsynligt tillstånd som kan ändra sidpixlar och exponerar avgränsad diagnostik när sidinnehåll inte kan renderas fullständigt

Tillståndsmedvetna cachevarianter

THotPDF.RenderLoadedPageToBitmapCached nycklar minnesposter efter sida, DPI, effektiv synlighet för valfritt innehåll, THotPDF.RenderColourIntent och THotPDF.RenderFallbackPolicy

Den beständiga cachen använder samma tillståndsdigest, medan diagnostikproducerande reservlägen förblir enbart i minnet så att en diskträff inte kan förlora rapporter om överhoppade objekt

En ändring av en valfri innehållsgrupp väljer en annan variant i stället för att radera den tidigare bitmappen, så att växla tillbaka ett lager eller en färgintention kan återanvända tidigare arbete

Färgintention

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

rciDocument respekterar varje innehållsströms ri-operator och förblir standard

De fyra explicita värdena åsidosätter innehållsströmmens val av intention och tillämpas på efterföljande ICCBased-fyllning och strokekonverteringar

Reservpolicy

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

THotPDF.GetLastRenderFallbackDiagnostics returnerar den kvarhållna uppsättningen, medan THotPDF.ClearLastRenderFallbackDiagnostics rensar den; cachelagrade rapportlägesposter behåller sin diagnostiskuppsättning, så en träff i minnescachen returnerar samma renderingsfullständighetsinformation som den ursprungliga renderingen

Enhetlig operationstelemetri

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 returnerar en THPDFOperationTelemetry-post som innehåller väggtid, CPU-tid för aktuell tråd, minne, allokering, process-I/O, filteravkodning, cache, objekträkning, framgång och avbrytningsmått

Dokumentinläsning, synkron och cachelagrad sidrendering, progressiva renderingsskivor, selektiv strömoptimering och parallell bildoptimering publicerar samma postform

PeakMemoryBytes är en bärbar uppskattning av dokumentoperationen snarare än operativsystemets processarbetsuppsättning, så den förblir stabil över värdar och inkluderar inlästa källbytes, renderade bitmappsposter, avkodad-bildcachevikt och topplagring i filterkedjan

PeakProcessMemoryBytes är den största avsamlade processarbetsuppsättningen, medan AllocationCount är den största avsamlade ökningen av samtidigt levande Delphi-minneshanteringsblock i förhållande till operationens start snarare än en total allokering under livslängden

CPUTimeMicroseconds mäter den anropande tråden, medan ReadIOBytes, WriteIOBytes och OtherIOBytes är processomfattande räknardeltor och kan därför inkludera samtidigt arbete i samma process

DecodeInputBytes är komprimerad indata, DecodeOutputBytes är slutlig filterkedjeutdata och DecodedBytes är aggregerat arbete över varje filtersteg; DecodeExpansionPermille dividerar slutlig utdata med indata, där 1000 representerar 1x

ScheduledMemoryBytes är uppskattningen för operationstillträde, MemorySchedulerWaitMilliseconds registrerar kötid och MemorySchedulerDelayed skiljer köat tillträde från den allokeringsfria snabbsökvägen

Minnes- och allokeringstoppar avsamlas vid operationsgränser, filterkedjeslutförande, progressiva skivor och avbrytningskontrollpunkter, så de är operationella signaler med låg overhead snarare än instrumenteringsspår på instruktionsnivå

Relaterade API:er