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;
rfpIgnoreohrani starejše permisivno vedenjerfpReportbeleži nepodprte operatorje, manjkajoče vire, neveljavne objekte, neuspehe dekodiranja, omejitve rekurzije in nepodprte vrste objektovrfpStrictsproži izjemo pri prvem nadomestnem prehodu zunaj združljivostnega razdelkaBXinEXTHotPDF.RenderFallbackDiagnosticLimitomeji ohranjeno diagnostikoTHotPDF.LastRenderFallbackDroppedCountporoča o diagnostiki, izpuščeni po konfigurirani omejitvi
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