Renderelési diagnosztika és művelet-telemetria
A HotPDF a renderelt oldal gyorsítótár-bejegyzéseit minden hívó által látható, az oldalpixeleket megváltoztatható állapot szerint különbözteti meg, és korlátos diagnosztikát tesz elérhetővé, ha az oldaltartalom nem renderelhető teljesen
Állapot-tudatos gyorsítótár-változatok
A THotPDF.RenderLoadedPageToBitmapCached a memóriabejegyzéseket oldal, DPI, effektív opcionális tartalom-láthatóság, THotPDF.RenderColourIntent és THotPDF.RenderFallbackPolicy szerint kulcsolja
Az állandó gyorsítótár ugyanazt az állapot-üzenetkivonatot használja, míg a diagnosztikát előállító visszaesési módok memória-önállóak maradnak, így egy lemez-találat nem veszítheti el a kihagyott objektum-jelentéseket
Egy opcionális tartalom-csoport megváltoztatása másik változatot választ a korábbi bitkép törlése helyett, így egy réteg vagy színintenció visszakapcsolása újrahasználhatja a korábbi munkát
Színintenció
PDF.RenderColourIntent := rciRelativeColorimetric;
Bitmap := PDF.RenderLoadedPageToBitmapCached(0, 144);
Az rciDocument tiszteletben tartja minden tartalomfolyam ri operátorát, és alapértelmezés marad
A négy kifejezett érték felülírja a tartalomfolyam-intenció-kiválasztást, és a későbbi ICCBased kitöltő és körvonalazó átalakításokra alkalmazzák
Visszaesési politika
PDF.RenderFallbackPolicy := rfpReport;
PDF.RenderFallbackDiagnosticLimit := 256;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
Diagnostics := PDF.GetLastRenderFallbackDiagnostics;
- Az
rfpIgnoremegőrzi az örökölt megengedő viselkedést - Az
rfpReportrögzíti a nem támogatott operátorokat, hiányzó erőforrásokat, érvénytelen objektumokat, dekódolási hibákat, rekurziós korlátokat és nem támogatott objektumtípusokat - Az
rfpStrictaz első visszaesésnél kivételt vált ki egyBXésEXkompatibilitási szakaszon kívül - A
THotPDF.RenderFallbackDiagnosticLimitkorlátozza a megtartott diagnosztikákat - A
THotPDF.LastRenderFallbackDroppedCounta konfigurált korlátos határ után kihagyott diagnosztikákat jelenti
A THotPDF.GetLastRenderFallbackDiagnostics visszaadja a megtartott készletet, míg a THotPDF.ClearLastRenderFallbackDiagnostics törli azt; a gyorsítótárazott jelentés-mód bejegyzések megtartják diagnosztikai készletüket, így egy memória-gyorsítótár-találat ugyanazt a renderelés-teljességi információt adja vissza, mint az eredeti renderelés
Egységes művelet-telemetria
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;
A THotPDF.GetLastOperationTelemetry egy THPDFOperationTelemetry rekordot ad vissza, amely fali időt, aktuális szál CPU-időt, memóriát, foglalást, folyamat-I/O-t, szűrő-dekódolást, gyorsítótárat, objektumszámot, sikert és megszakítást mérő metrikákat tartalmaz
A dokumentumbetöltés, a szinkron és gyorsítótárazott oldalrenderelés, a progresszív renderelés-szeletek, a szelektív folyam-optimalizálás és a párhuzamos képoptimalizálás ugyanazt a rekordalakot teszi közzé
A PeakMemoryBytes hordozható dokumentumművelet-becslés, nem az operációs rendszer folyamat-munkahalmaza, így gazdagépek között stabil marad, és tartalmazza a betöltött forrásbájtokat, a renderelt bitkép-bejegyzéseket, a dekódolt kép-gyorsítótár súlyát és a csúcs szűrőlánc-tárolást
A PeakProcessMemoryBytes a legnagyobb mintavételezett folyamat-munkahalmaz, míg az AllocationCount az egyidejűleg élő Delphi memóriakezelő-blokkok legnagyobb mintavételezett növekedése a művelet kezdetéhez képest, nem pedig élettartam-foglalási összeg
A CPUTimeMicroseconds a hívó szálat méri, míg a ReadIOBytes, WriteIOBytes és OtherIOBytes folyamatszintű számláló-különbségek, ezért tartalmazhatnak egyidejű munkát ugyanabban a folyamatban
A DecodeInputBytes a tömörített bemenet, a DecodeOutputBytes a végső szűrőlánc-kimenet, a DecodedBytes pedig az összesített munka minden szűrőfokozaton; a DecodeExpansionPermille a végső kimenetet osztja a bemenettel, a 1000 a 1x értéket jelenti
A ScheduledMemoryBytes a művelet-beengedési becslés, a MemorySchedulerWaitMilliseconds a sorban állási időt rögzíti, a MemorySchedulerDelayed pedig megkülönbözteti a sorba állított beengedést a foglalásmentes gyors útvonaltól
A memória- és foglalási csúcsokat művelethatárokon, szűrőlánc-befejezéskor, progresszív szeleteknél és megszakítás-ellenőrzőpontoknál mintavételezik, így alacsony többletköltségű működési jelek, nem pedig utasításszintű profilozó nyomvonalak