Chargement différé de l'arbre de pages

HotPDF peut conserver un arbre de pages PDF chargé ordinaire comme une table d'espaces réservés compacte et ne résoudre les pages individuelles que lorsqu'une API en a besoin pour la première fois

Activation

LazyPageTreeThreshold est défini par défaut à 4096 pages et s'applique aux arbres de pages valides dont la racine expose une structure /Count et /Kids utilisable

Définissez le seuil à 0 avant le chargement pour désactiver la gestion différée de l'arbre de pages

Les fichiers sous le seuil et les arbres malformés continuent via le chemin de récupération hâtive existant

Accès aléatoire

Le premier accès à une page suit les valeurs /Count du sous-arbre pour ignorer les branches non associées et résout les objets indirects via un index local au document à adressage ouvert

La page résolue est stockée dans son emplacement d'espace réservé, de sorte qu'un accès répété est un succès de cache direct

Les API usuelles de pages chargées matérialisent la page demandée de façon transparente, tandis que MaterializeLoadedPage permet aux appelants de préparer explicitement une page connue

Expansion complète et mutation

MaterializeAllLoadedPages développe l'arbre restant dans l'ordre canonique des pages

Les opérations qui ajoutent, suppriment, copient, remplacent, déplacent, inversent, échangent, reconstruisent ou enregistrent structurellement des pages chargées effectuent une expansion complète avant de muter ou sérialiser le graphe de pages

Cela préserve la sémantique de mutation et d'enregistrement existante tout en gardant l'accès orienté lecture proportionnel à la profondeur de branche parcourue

Télémétrie

GetLoadedPageTreeStatistics rapporte le stockage d'espaces réservés, les pages matérialisées, la profondeur et le travail de traversée, la capacité de l'index d'objets, l'activité de cache et les expansions complètes sans forcer la matérialisation

Un critère de régression couvre 100 000 pages avec un plafond de croissance de l'ensemble de travail de 256 Mio et un plafond de premier accès aléatoire de 500 ms sur les cibles Windows prises en charge

Voir aussi : LazyPageTreeThreshold, MaterializeLoadedPage, MaterializeAllLoadedPages, GetLoadedPageTreeStatistics