Lazy inläsning av sidträd

HotPDF kan behålla ett vanligt inläst PDF-sidträd som en kompakt platshållartabell och lösa enskilda sidor endast när ett API först behöver dem

Aktivering

LazyPageTreeThreshold är som standard 4096 sidor och gäller giltiga sidträd vars rot exponerar en användbar /Count- och /Kids-struktur

Ange tröskeln till 0 före inläsning för att inaktivera lazy-sidträdshantering

Filer under tröskeln och felformade träd fortsätter genom den befintliga ivriga återhämtningssökvägen

Slumpmässig access

Den första åtkomsten till en sida följer delträdets /Count-värden för att hoppa över orelaterade grenar och löser indirekta objekt genom ett dokumentlokalt open-addressed-index

Den lösta sidan lagras i sin platshållarslott, så upprepad access är en direkt cacheräff

Vanliga inlästa-sid-API:er materialiserar den begärda sidan transparent, medan MaterializeLoadedPage låter anropare förbereda en känd sida explicit

Full expansion och ändring

MaterializeAllLoadedPages expanderar det återstående trädet i kanonisk sidordning

Operationer som strukturellt lägger till, tar bort, kopierar, ersätter, flyttar, vänder, byter, bygger om eller sparar inlästa sidor utför full expansion innan de ändrar eller serialiserar sidgrafen

Detta bevarar befintlig ändrings- och sparsemantik samtidigt som läsorienterad åtkomst förblir proportionell mot det travesterade grenadens djup

Telemetri

GetLoadedPageTreeStatistics rapporterar platshållarlagring, materialiserade sidor, travesteringsdjup och -arbete, objektindexkapacitet, cacheaktivitet och fulla expansioner utan att tvinga fram materialisering

En regression-grind täcker 100 000 sidor med ett övre tak på 256 MiB tillväxt av arbetsuppsättning och ett övre tak på 500 ms för första slumpmässiga access på stödda Windows-mål

Se även: LazyPageTreeThreshold, MaterializeLoadedPage, MaterializeAllLoadedPages, GetLoadedPageTreeStatistics