Dijagnostika renderovanja i telemetrija operacija
HotPDF razlikuje unose keša renderovanih stranica po svakom stanju vidljivom pozivaocu koje može da promeni piksele stranice i izlaže ograničenu dijagnostiku kada se sadržaj stranice ne može u potpunosti renderovati
Varijante keša svesne stanja
THotPDF.RenderLoadedPageToBitmapCached ključuje memorijske unose po stranici, DPI, efektivnoj vidljivosti opcionog sadržaja, THotPDF.RenderColourIntent i THotPDF.RenderFallbackPolicy
Trajni keš koristi isti digest stanja, dok režimi rezervnog pada koji proizvode dijagnostiku ostaju samo u memoriji tako da pogodak na disku ne može da izgubi izveštaje o preskočenim objektima
Promena grupe opcionog sadržaja bira drugu varijantu umesto brisanja prethodnog bitmapa, tako da vraćanje sloja ili namere boja može da ponovo iskoristi raniji rad
Namera boja
PDF.RenderColourIntent := rciRelativeColorimetric;
Bitmap := PDF.RenderLoadedPageToBitmapCached(0, 144);
rciDocument poštuje svaki ri operator toka sadržaja i ostaje podrazumevani
Četiri eksplicitne vrednosti nadjačavaju izbor namere toka sadržaja i primenjuju se na naknadne ICCBased konverzije ispune i crte
Politika rezervnog pada
PDF.RenderFallbackPolicy := rfpReport;
PDF.RenderFallbackDiagnosticLimit := 256;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
Diagnostics := PDF.GetLastRenderFallbackDiagnostics;
rfpIgnorečuva nasleđeno permisivno ponašanjerfpReportbeleži nepodržane operatore, nedostajuće resurse, nevažeće objekte, neuspele dekodiranja, ograničenja rekurzije i nepodržane tipove objekatarfpStrictpodiže grešku pri prvom rezervnom padu izvanBXiEXsekcije kompatibilnostiTHotPDF.RenderFallbackDiagnosticLimitograničava zadržanu dijagnostikuTHotPDF.LastRenderFallbackDroppedCountprijavljuje dijagnostiku izostavljenu nakon konfigurisanog ograničenog limita
THotPDF.GetLastRenderFallbackDiagnostics vraća zadržani skup, dok ga THotPDF.ClearLastRenderFallbackDiagnostics čisti; keširani unosi u režimu izveštavanja zadržavaju svoj dijagnostički skup, tako da pogodak u memorijskom kešu vraća iste informacije o potpunosti renderovanja kao originalno renderovanje
Ujedinjena telemetrija operacija
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 vraća THPDFOperationTelemetry zapis koji sadrži vreme zida, CPU vreme trenutne niti, memoriju, alokaciju, procesni I/O, dekodiranje filtera, keš, broj objekata, uspeh i metrike otkazivanja
Učitavanje dokumenta, sinhrono i keširano renderovanje stranica, progresivni isečci renderovanja, selektivna optimizacija tokova i paralelna optimizacija slika objavljuju isti oblik zapisa
PeakMemoryBytes je prenosiva procena operacije dokumenta, a ne radni skup procesa operativnog sistema, tako da ostaje stabilan na različitim hostovima i uključuje bajtove učitanog izvora, unose renderovanih bitmapa, težinu keša dekodiranih slika i vršno skladište lanca filtera
PeakProcessMemoryBytes je najveći uzorkovani radni skup procesa, dok je AllocationCount najveće uzorkovano povećanje istovremeno živih blokova Delphi upravljača memorije u odnosu na početak operacije, a ne ukupna alokacija tokom životnog veka
CPUTimeMicroseconds meri nit koja poziva, dok su ReadIOBytes, WriteIOBytes i OtherIOBytes razlike brojača na nivou procesa i stoga mogu da uključe konkurentan rad u istom procesu
DecodeInputBytes je kompresovani ulaz, DecodeOutputBytes je finalni izlaz lanca filtera, a DecodedBytes je agregatni rad kroz svaku fazu filtera; DecodeExpansionPermille deli finalni izlaz ulazom, pri čemu 1000 predstavlja 1x
ScheduledMemoryBytes je procena prijema operacije, MemorySchedulerWaitMilliseconds beleži vreme čekanja u redu, a MemorySchedulerDelayed razlikuje prijem iz reda od brze putanje bez alokacije
Vrhovi memorije i alokacije uzorkuju se na granicama operacija, završetku lanca filtera, progresivnim isečcima i kontrolnim tačkama otkazivanja, tako da su to signali operacija niskog opterećenja, a ne tragovi profajlera na nivou instrukcija