Rendering Diagnostics and Operation Telemetry

HotPDF rozlišuje položky vyrovnávacej pamäte vykreslených stránok podľa každého stavu viditeľného pre volajúceho, ktorý môže zmeniť pixely stránky, a vystavuje ohraničenú diagnostiku, keď sa obsah stránky nedá vykresliť úplne

Varianty vyrovnávacej pamäte s ohľadom na stav

THotPDF.RenderLoadedPageToBitmapCached kľúčuje pamäťové položky podľa stránky, DPI, efektívnej viditeľnosti voliteľného obsahu, THotPDF.RenderColourIntent a THotPDF.RenderFallbackPolicy

Trvalá vyrovnávacia pamäť používa rovnaký digest stavu, zatiaľ čo režimy fallbacku produkujúce diagnostiku zostávajú iba v pamäti, takže zásah na disku nemôže stratiť reporty preskočených objektov

Zmena skupiny voliteľného obsahu vyberie iný variant namiesto vymazania predchádzajúcej bitmapy, takže prepnutie vrstvy alebo farebného zámeru späť môže znovu použiť skoršiu prácu

Farebný zámer

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

rciDocument rešpektuje každý operátor ri prúdu obsahu a zostáva predvolený

Štyri explicitné hodnoty prepisujú výber zámeru prúdu obsahu a aplikujú sa na následné konverzie výplne a ťahu ICCBased

Politika fallbacku

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

THotPDF.GetLastRenderFallbackDiagnostics vracia uchovanú množinu, zatiaľ čo THotPDF.ClearLastRenderFallbackDiagnostics ju vymaže; položky režimu reportu vo vyrovnávacej pamäti si zachovávajú svoju diagnostickú množinu, takže zásah do pamäťovej vyrovnávacej pamäte vracia rovnaké informácie o úplnosti vykreslenia ako pôvodné vykreslenie

Jednotná telemetria operácií

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 vracia záznam THPDFOperationTelemetry obsahujúci stenný čas, čas CPU aktuálneho vlákna, pamäť, alokácie, I/O procesu, dekódovanie filtrov, vyrovnávacie pamäte, počty objektov, úspech a metriky zrušenia

Načítanie dokumentu, synchronné a vyrovnávané vykresľovanie stránok, plátky progresívneho vykresľovania, selektívna optimalizácia prúdov a paralelná optimalizácia obrázkov publikujú rovnaký tvar záznamu

PeakMemoryBytes je prenosný odhad operácie dokumentu, nie pracovná sada procesu operačného systému, takže zostáva stabilný naprieč hostiteľmi a zahŕňa načítané zdrojové bajty, položky vykreslených bitmap, váhu vyrovnávacej pamäte dekódovaných obrázkov a špičkové úložisko reťazcov filtrov

PeakProcessMemoryBytes je najväčšia vzorkovaná pracovná sada procesu, zatiaľ čo AllocationCount je najväčší vzorkovaný nárast súbežne živých blokov správcu pamäte Delphi vzhľadom na začiatok operácie, nie celoživotný súčet alokácií

CPUTimeMicroseconds meria volajúce vlákno, zatiaľ čo ReadIOBytes, WriteIOBytes a OtherIOBytes sú delty počítadiel v rámci procesu, a preto môžu zahŕňať súbežnú prácu v tom istom procese

DecodeInputBytes je komprimovaný vstup, DecodeOutputBytes je konečný výstup reťazca filtrov a DecodedBytes je agregovaná práca naprieč každou fázou filtrov; DecodeExpansionPermille delí konečný výstup vstupom, pričom 1000 predstavuje 1x

ScheduledMemoryBytes je odhad prijatia operácie, MemorySchedulerWaitMilliseconds zaznamenáva čas vo fronte a MemorySchedulerDelayed rozlišuje zaradené prijatie od rýchlej cesty bez alokácií

Špičky pamäte a alokácií sa vzorkujú na hraniciach operácií, dokončení reťazcov filtrov, progresívnych plátkoch a kontrolných bodoch zrušenia, takže sú to prevádzkové signály s nízkou réžiou, nie stopy profileru na úrovni inštrukcií

Súvisiace API