Diagnostika upodabljanja in telemetrija operacij

HotPDF razlikuje vnose predpomnilnika upodobljenih strani po vsakem stanju, vidnem klicatelju, ki lahko spremeni slikovne pike strani, ter izpostavi omejeno diagnostiko, kadar vsebine strani ni mogoče upodobiti v celoti

Različice predpomnilnika, ki upoštevajo stanje

THotPDF.RenderLoadedPageToBitmapCached ključuje vnose v pomnilniku po strani, DPI, efektivni vidnosti neobvezne vsebine, THotPDF.RenderColourIntent in THotPDF.RenderFallbackPolicy

Trajni predpomnilnik uporabi isti povzetek stanja, medtem ko načini nadomestnega prehoda, ki ustvarjajo diagnostiko, ostanejo samo v pomnilniku, tako da zadetek na disku ne more izgubiti poročil o preskočenih objektih

Sprememba skupine neobvezne vsebine izbere drugo različico namesto brisanja prejšnje bitmapne slike, zato lahko preklop plasti ali barvnega namena nazaj znova uporabi prejšnje delo

Barvni namen

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

rciDocument spoštuje vsak operator ri toka vsebine in ostane privzeti

Štiri eksplicitne vrednosti preglasijo izbiro namena toka vsebine in se uporabijo za poznejše pretvorbe polnil in potez ICCBased

Politika nadomestnega prehoda

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

THotPDF.GetLastRenderFallbackDiagnostics vrne ohranjeni nabor, medtem ko ga THotPDF.ClearLastRenderFallbackDiagnostics počisti; predpomnjeni vnosi v načinu poročanja ohranijo svoj nabor diagnostike, zato zadetek v pomnilniškem predpomnilniku vrne iste informacije o popolnosti upodabljanja kot prvotno upodabljanje

Enotna telemetrija operacij

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 vrne zapis THPDFOperationTelemetry, ki vsebuje metrike stenskega časa, časa CPU trenutne niti, pomnilnika, dodelitve, procesnih vhodno/izhodnih podatkov, dekodiranja filtrov, predpomnilnika, števila objektov, uspeha in preklica

Nalaganje dokumenta, sinhrono in predpomnjeno upodabljanje strani, progresivne rezine upodabljanja, selektivna optimizacija tokov in vzporedna optimizacija slik objavijo isto obliko zapisa

PeakMemoryBytes je prenosljiva ocena operacije dokumenta in ne delovni nabor procesa operacijskega sistema, zato ostane stabilen med gostitelji ter vključuje naložene izvorne bajte, vnose upodobljenih bitmapnih slik, težo predpomnilnika dekodiranih slik in najvišjo shrambo verige filtrov

PeakProcessMemoryBytes je največji vzorčeni delovni nabor procesa, medtem ko je AllocationCount največje vzorčeno povečanje sočasno živih blokov upravljalnika pomnilnika Delphi glede na začetek operacije in ne skupna dodelitev v življenjski dobi

CPUTimeMicroseconds meri klicno nit, medtem ko so ReadIOBytes, WriteIOBytes in OtherIOBytes delte števcev na ravni procesa in zato lahko vključujejo sočasno delo v istem procesu

DecodeInputBytes je stisnjeni vhod, DecodeOutputBytes je končni izhod verige filtrov in DecodedBytes je skupno delo čez vsako stopnjo filtrov; DecodeExpansionPermille deli končni izhod z vhodom, pri čemer 1000 predstavlja 1x

ScheduledMemoryBytes je ocena sprejema operacije, MemorySchedulerWaitMilliseconds beleži čas čakalne vrste in MemorySchedulerDelayed razlikuje sprejem v čakalni vrsti od hitre poti brez dodelitve

Vrhovi pomnilnika in dodelitve se vzorčijo na mejah operacij, ob dokončanju verige filtrov, pri progresivnih rezinah in na kontrolnih točkah preklica, zato so operativni signali z nizko obremenitvijo in ne sledi profilerja na ravni navodil

Povezani API-ji