Index inverse de page

HotPDF maintient un index inverse local au document, de l'identité d'objet de page vers la position de page basée sur zéro

Comportement de recherche

GetPageArrIndexForObjectNumber accepte un numéro d'objet PDF, tandis que GetPageArrIndexForObject accepte soit un objet de page résolu, soit un THPDFLink

Les deux méthodes retournent -1 lorsque la valeur n'identifie pas une page courante

Si une entrée malformée expose la même identité plus d'une fois, la première page dans l'ordre du document gagne de façon déterministe

Construction et invalidation

L'index est construit paresseusement lors de la première recherche et utilise des tables à adressage ouvert séparées pour les numéros d'objets et les pointeurs d'objets résolus

Le chargement, la réinitialisation, l'ajout, la suppression, la copie, le remplacement, le déplacement, l'inversion, l'échange, la réorganisation ou la réconciliation de pages invalide les tables

La recherche suivante reconstruit les deux tables à partir de l'ordre de pages courant, de sorte que le coût de mutation n'inclut pas une reconstruction d'index anticipée

Performance et propriété

Les tables maintiennent leur facteur de charge sous la moitié et fournissent une recherche attendue en temps constant après une construction O(nombre de pages)

Un portail de régression effectue un million de recherches après mutation dans une table de 100 000 pages et exige une latence p95 inférieure à 5 microsecondes sur les deux cibles Windows prises en charge

L'index stocke des pointeurs d'objets non propriétaires et est libéré avec l'instance THotPDF

Ne modifiez pas une instance THotPDF en même temps qu'une recherche de page, car la mutation du graphe de document chargé reste sérialisée par l'appelant

Voir aussi : GetPageArrIndexForObjectNumber, GetPageArrIndexForObject, GetPageReverseIndexStatistics