惰性頁面樹載入
HotPDF 可以把一般已載入的 PDF 頁面樹保留成精簡的佔位表,只在 API 第一次需要某頁時才解析該頁
啟用條件
LazyPageTreeThreshold 預設為 4096 頁,適用於根節點具備可用 /Count 與 /Kids 結構的有效頁面樹
載入前把門檻設為 0 可停用惰性頁面樹處理
低於門檻的檔案與格式錯誤的樹,繼續走既有的立即復原路徑
隨機存取
第一次存取某頁時會沿著子樹的 /Count 值跳過不相關的分支,並透過文件本地的開放定址索引解析間接物件
解析出的頁面會存進它的佔位槽,重複存取就是直接的快取命中
一般的已載入頁面 API 會透明地具現化要求的頁面,MaterializeLoadedPage 則讓呼叫端明確預先準備已知的頁面
完整展開與變更
MaterializeAllLoadedPages 依標準頁面順序展開其餘的樹
在結構上新增、刪除、複製、取代、移動、反轉、交換、重建或儲存已載入頁面的操作,都會先完整展開再變更或序列化頁面圖形
這樣既保留既有的變更與儲存語意,讀取導向的存取成本也只與走訪的分支深度成正比
遙測
GetLoadedPageTreeStatistics 回報佔位儲存、已具現化頁面、遍歷深度與工作量、物件索引容量、快取活動與完整展開次數,而且不會強制具現化
回歸閘在支援的 Windows 目標上涵蓋 100,000 頁,工作集成長上限 256 MiB,首次隨機存取上限 500 ms
另請參閱: LazyPageTreeThreshold, MaterializeLoadedPage, MaterializeAllLoadedPages, GetLoadedPageTreeStatistics