Caricamento lazy del page-tree

HotPDF può conservare un page tree PDF caricato ordinario come una tabella di segnaposto compatta e risolvere le singole pagine solo quando un'API le richiede per la prima volta

Attivazione

LazyPageTreeThreshold è impostato per impostazione predefinita a 4096 pagine e si applica ai page tree validi la cui radice espone una struttura /Count e /Kids utilizzabile

Imposta la soglia a 0 prima del caricamento per disabilitare la gestione lazy del page tree

I file al di sotto della soglia e gli alberi malformati continuano attraverso il percorso eager esistente di recupero

Accesso casuale

Il primo accesso a una pagina segue i valori /Count del sottoalbero per saltare i rami non correlati e risolve gli oggetti indiretti tramite un indice open-addressed locale al documento

La pagina risolta viene archiviata nel suo slot di segnaposto, quindi un accesso ripetuto è un cache-hit diretto

Le API ordinarie delle pagine caricate materializzano la pagina richiesta in modo trasparente, mentre MaterializeLoadedPage consente ai chiamanti di preparare esplicitamente una pagina nota

Espansione completa e mutazione

MaterializeAllLoadedPages espande l'albero rimanente in ordine canonico di pagina

Le operazioni che aggiungono, eliminano, copiano, sostituiscono, muovono, invertono, scambiano, ricostruiscono o salvano strutturalmente le pagine caricate eseguono un'espansione completa prima di mutare o serializzare il grafo delle pagine

Questo preserva la semantica esistente di mutazione e save mantenendo l'accesso orientato alla lettura proporzionale alla profondità del ramo attraversato

Telemetria

GetLoadedPageTreeStatistics riporta l'archiviazione dei segnaposto, le pagine materializzate, la profondità e il lavoro di attraversamento, la capacità dell'indice degli oggetti, l'attività della cache e le espansioni complete senza forzare la materializzazione

Un gate di regressione copre 100.000 pagine con un tetto di crescita del working-set di 256 MiB e un tetto di 500 ms per il primo accesso casuale sulle destinazioni Windows supportate

Vedi anche: LazyPageTreeThreshold, MaterializeLoadedPage, MaterializeAllLoadedPages, GetLoadedPageTreeStatistics