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