轉譯診斷與操作遙測

HotPDF 以每個可能改變頁面像素的呼叫端可見狀態區分已轉譯頁面快取項目,並在頁面內容無法完整轉譯時提供有界診斷

狀態感知快取變體

THotPDF.RenderLoadedPageToBitmapCached 以頁面、DPI、生效的可選內容可見性、THotPDF.RenderColourIntent 與 THotPDF.RenderFallbackPolicy 作為記憶體項目的鍵

持久化快取使用相同的狀態摘要,會產生診斷的後備模式則僅存記憶體,磁碟命中因此不會遺失跳過物件的報告

改變可選內容群組會選擇另一個變體而不是刪除先前的點陣圖,把圖層或色彩意向切回來時可重用先前的工作

色彩意向

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

rciDocument 尊重每個內容串流的 ri 運算子,並維持為預設值

四個明確值會覆蓋內容串流的意向選擇,並套用到後續的 ICCBased 填色與描邊轉換

後備原則

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

THotPDF.GetLastRenderFallbackDiagnostics 回傳保留的集合,THotPDF.ClearLastRenderFallbackDiagnostics 則清除它;快取的 report 模式項目保留其診斷集合,記憶體快取命中因此能回傳與原始轉譯相同的轉譯完整性資訊

統一操作遙測

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 時間、記憶體、配置、程序 I/O、濾器解碼、快取、物件數、成功與取消指標

文件載入、同步與快取頁面轉譯、漸進轉譯切片、選擇性串流最佳化與平行影像最佳化都發布相同的記錄形狀

PeakMemoryBytes 是可攜的文件操作估計值,不是作業系統的程序工作集,因此跨主機穩定,涵蓋已載入來源位元組、已轉譯點陣圖項目、已解碼影像快取權重與峰值濾器鏈儲存

PeakProcessMemoryBytes 是取樣到的最大程序工作集;AllocationCount 則是相對操作開始、同時存活的 Delphi 記憶體管理器區塊數的最大取樣增量,而不是整個生命週期的配置總量

CPUTimeMicroseconds 測量呼叫執行緒;ReadIOBytes、WriteIOBytes 與 OtherIOBytes 是整個程序的計數器差值,因此可能包含同程序內的並行工作

DecodeInputBytes 是壓縮輸入,DecodeOutputBytes 是最終濾器鏈輸出,DecodedBytes 是各濾器階段的彙總工作量;DecodeExpansionPermille 以最終輸出除以輸入,1000 代表 1x

ScheduledMemoryBytes 是操作准入估計值,MemorySchedulerWaitMilliseconds 記錄排隊時間,MemorySchedulerDelayed 區分排隊准入與零配置的快速路徑

記憶體與配置峰值在操作邊界、濾器鏈完成、漸進切片與取消檢查點取樣,因此是低開銷的營運訊號,不是指令級的 profiler 追蹤

相關 API