אבחון עיבוד וטלמטריה של פעולות
HotPDF מבדיל רשומות מטמון של עמוד מעובד לפי כל מצב הנראה לקורא שיכול לשנות פיקסלי עמוד, וחושף אבחון מוגבל כאשר לא ניתן לעבד את תוכן העמוד במלואו
וריאנטים של מטמון מודעי-מצב
THotPDF.RenderLoadedPageToBitmapCached ממפתח רשומות זיכרון לפי עמוד, DPI, נראות תוכן אופציונלי אפקטיבית, THotPDF.RenderColourIntent ו-THotPDF.RenderFallbackPolicy
המטמון הקבוע משתמש באותו דייג'סט מצב, בעוד מצבי fallback מייצרי-אבחון נשארים בזיכרון בלבד כך שפגיעה בדיסק אינה יכולה לאבד דוחות אובייקטים שדולגו
שינוי קבוצת תוכן אופציונלי בוחר וריאנט אחר במקום למחוק את מפת הסיביות הקודמת, כך שהחזרת שכבה או כוונת צבע לאחור יכולה לעשות שימוש חוזר בעבודה מוקדמת יותר
כוונת צבע
PDF.RenderColourIntent := rciRelativeColorimetric;
Bitmap := PDF.RenderLoadedPageToBitmapCached(0, 144);
rciDocument מכבד כל אופרטור ri בזרם התוכן ונשאר ברירת המחדל
ארבעת הערכים המפורשים עוקפים את בחירת הכוונה בזרם התוכן ומוחלים על המרות ICCBased של מילוי וקו לאחר מכן
מדיניות fallback
PDF.RenderFallbackPolicy := rfpReport;
PDF.RenderFallbackDiagnosticLimit := 256;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
Diagnostics := PDF.GetLastRenderFallbackDiagnostics;
rfpIgnoreמשמר את ההתנהגות המתירנית המיושנתrfpReportמתעד אופרטורים לא נתמכים, משאבים חסרים, אובייקטים לא חוקיים, כשלי פענוח, מגבלות רקורסיה וסוגי אובייקטים לא נתמכיםrfpStrictמעלה חריגה ב-fallback הראשון מחוץ לקטע תאימותBXו-EXTHotPDF.RenderFallbackDiagnosticLimitקושר את האבחון שנשמרTHotPDF.LastRenderFallbackDroppedCountמדווח על אבחון שהושמט לאחר המגבלה המוגבלת שהוגדרה
THotPDF.GetLastRenderFallbackDiagnostics מחזיר את הקבוצה שנשמרה, בעוד THotPDF.ClearLastRenderFallbackDiagnostics מנקה אותה; רשומות מצב-דיווח במטמון שומרות על קבוצת האבחון שלהן, כך שפגיעה במטמון זיכרון מחזירה את אותו מידע שלמות עיבוד כמו העיבוד המקורי
טלמטריה אחידה של פעולות
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 מחזיר רשומת THPDFOperationTelemetry המכילה מדדי זמן שעון, זמן CPU של השרשור הנוכחי, זיכרון, הקצאה, קלט/פלט של תהליך, פענוח מסנן, מטמון, ספירת אובייקטים, הצלחה וביטול
טעינת מסמך, עיבוד עמוד סינכרוני ומאוחסן, פרוסות עיבוד פרוגרסיבי, אופטימיזציית זרמים סלקטיבית ואופטימיזציית תמונות מקבילה מפרסמות את אותו מבנה רשומה
PeakMemoryBytes הוא אומדן נייד של פעולת מסמך במקום קבוצת העבודה של תהליך מערכת ההפעלה, כך שהוא נשאר יציב בין מארחים וכולל בתי מקור טעונים, רשומות מפת סיביות מעובדות, משקל מטמון תמונות מפוענחות ואחסון שיא של שרשרת מסננים
PeakProcessMemoryBytes הוא קבוצת העבודה הגדולה ביותר שנדגמה של התהליך, בעוד AllocationCount הוא הגידול הגדול ביותר שנדגם בבלוקים חיים בו-זמנית של מנהל הזיכרון של Delphi יחסית לתחילת הפעולה ולא סך הקצאות לכל החיים
CPUTimeMicroseconds מודד את השרשור הקורא, בעוד ReadIOBytes, WriteIOBytes ו-OtherIOBytes הם דלתות מונה כלל-תהליכיות ולכן יכולים לכלול עבודה מקבילה באותו תהליך
DecodeInputBytes הוא קלט דחוס, DecodeOutputBytes הוא פלט סופי של שרשרת המסננים, ו-DecodedBytes הוא עבודה מצטברת על פני כל שלב מסנן; DecodeExpansionPermille מחלק את הפלט הסופי בקלט, כאשר 1000 מייצג 1x
ScheduledMemoryBytes הוא אומדן הקבלה של הפעולה, MemorySchedulerWaitMilliseconds מתעד את זמן התור, ו-MemorySchedulerDelayed מבדיל בין קבלה בתור לנתיב המהיר נטול-ההקצאות
שיאי זיכרון והקצאה נדגמים בגבולות פעולה, בהשלמת שרשרת מסננים, בפרוסות פרוגרסיביות ובנקודות ביטול, ולכן הם אותות תפעוליים בעלי תקורה נמוכה ולא עקבות profiler ברמת הוראה