Carga perezosa del árbol de páginas

HotPDF puede conservar un árbol de páginas PDF cargado común como una tabla compacta de placeholders y resolver cada página individual solo cuando una API la necesita por primera vez

Activación

LazyPageTreeThreshold tiene un valor predeterminado de 4096 páginas y aplica a árboles de páginas válidos cuya raíz expone una estructura /Count y /Kids utilizable

Establezca el umbral en 0 antes de cargar para deshabilitar el manejo perezoso del árbol de páginas

Los archivos por debajo del umbral y los árboles malformados continúan por la ruta de recuperación ansiosa existente

Acceso aleatorio

El primer acceso a una página sigue los valores /Count del subárbol para saltar ramas no relacionadas y resuelve los objetos indirectos mediante un índice open-addressed local al documento

La página resuelta se guarda en su slot de placeholder, así que los accesos repetidos son un hit directo de cache

Las APIs comunes de páginas cargadas materializan la página solicitada de forma transparente, mientras que MaterializeLoadedPage permite al llamador preparar explícitamente una página conocida

Expansión completa y mutación

MaterializeAllLoadedPages expande el resto del árbol en el orden canónico de páginas

Las operaciones que estructuralmente agregan, eliminan, copian, reemplazan, mueven, invierten, intercambian, reconstruyen o guardan páginas cargadas realizan la expansión completa antes de mutar o serializar el grafo de páginas

Esto preserva la semántica existente de mutación y guardado, al tiempo que mantiene el acceso orientado a lectura proporcional a la profundidad de la rama recorrida

Telemetría

GetLoadedPageTreeStatistics informa el almacenamiento de placeholders, las páginas materializadas, la profundidad y el trabajo de recorrido, la capacidad del índice de objetos, la actividad del cache y las expansiones completas, sin forzar la materialización

Una puerta de regresión cubre 100,000 páginas con un techo de crecimiento de working set de 256 MiB y un techo de 500 ms para el primer acceso aleatorio en los objetivos Windows soportados

Vea también: LazyPageTreeThreshold, MaterializeLoadedPage, MaterializeAllLoadedPages, GetLoadedPageTreeStatistics